資源限制
時間限制:1.0s 記憶體限制:256.0mb
問題描述
輸入正整數n,判斷從1到n之中,數字1一共要出現幾次。例如1123這個數,則出現了兩次1。例如15,那麼從1到15之中,一共出現了8個1。
輸入格式
乙個正整數n
輸出格式
乙個整數,表示1出現的資料
樣例輸入
15樣例輸出
8資料規模和約定
n不超過30000
思路
1到n迴圈遍歷,在迴圈中統計這個數中的1,可以呼叫函式,也可直接解決。
統計乙個數中1的個數:先看低位是不是1,再逐步砍去已經看了的,繼續看低位是不是1。
#include
using
namespace std;
int sum=0;
voidf(
int x)
}int
main()
printf
("%d"
,sum)
;return0;
}
演算法實踐 二進位制中最低位的位置
給定乙個16位的十進位制數,請把該數轉換為二進位制數來看待。請找到該數看為二進位制後,其最低位的1出現的位置。也就是這個數最低位的1是二進位制中的第幾位呢?以1開頭的二進位制數的十進位制表示b.例如輸入9.輸出k,表示b中的1在第k位 k 0,1,2 15 9的最低位的1出現在位置0.90中,low...
c 數值ab互換 怎麼把乙個數字的高低位互換
int main int a 2,b 0 int i 0 for i 32 i b a i 1 printf d n b return 0 暈剛回答了 還沒有關 這是位翻轉的 互換是同樣的技巧 include voidshowbit unsigned int x,int n if n showbit...
不要被階乘嚇倒(二進位制表示中最低位1的位置 )
原文 統計乙個整數n的因子個數的方法 將n進行素因子分解,n q1 r1 q2 r2 qi ri 則n的因子數為 r1 1 r2 1 ri 1 階乘 factorial 是個很有意思的函式,但是不少人都比較怕它,我們來看看兩個與階乘相關的問題 1 給定乙個整數n,那麼n的階乘n!末尾有多少個0呢?例...