演算法訓練 1的個數 看低位,砍低位!!

2021-10-17 05:13:48 字數 597 閱讀 7028

資源限制

時間限制: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呢?例...