問題描述
輸入正整數n,判斷從1到n之中,數字1一共要出現幾次。例如1123這個數,則出現了兩次1。例如15,那麼從1到15之中,一共出現了8個1。
輸入格式
乙個正整數n
輸出格式
乙個整數,表示1出現的資料
樣例輸入
樣例輸出
#include
變數 x;
log10
(x)//對x取對數 log10(100) 2
ceil
(x)//對x向上取整 ceil(1.1) 2
floor
(x)//對x向下取整 floor(1.9) 2
round
(x)//對x四捨五入 round(2.3) 2 round(2.5) 3
1.輸入乙個數n,然後從1到n逐個迴圈;
2.設定乙個計數器count,發現某個數含有乙個「1」,就count++;
3.從第一位開始查 x%10就是第一位位 x/10就是下一位 不斷x=x/10 再x%10可以得到每一位
4.每乙個數需要逐個檢查,所以需要迴圈這個數的長度的次數(比如101需要檢查3次)對10取對數向上取整得到迴圈條件
ceil(log10(i))
5.發現演算法不能把類似10 100 1000計數器計入,所以計數器加上該數的向下取整
floor(log10(i))
6.發現演算法log10(1)是結果為0,計數器不計數為「1」的情況
//1的個數
#include
#include
using
namespace std;
intmain()
} count +
=floor
(log10
(n))
;//要加上多少個10的倍數 如10 100 1000
cout << count;
return0;
}
藍橋杯 2的個數
小藍要為一條街的住戶製作門牌號。這條街一共有2020位住戶,門牌號從1到2020編號。小藍製作門牌的方法是先製作0到9這幾個數字字元,最後根據需要將字元貼上到門牌上,例如門牌1017需要依次貼上字元1 0 1 7,即需要1個字元0,兩個字元1,乙個字元7.請問 要製作所有的1到2020號門牌,總共需...
衝刺藍橋杯C 基礎1
明年打算衝刺一下藍橋杯,現在開始準備三個月看看能什麼效果!加油吧,小夥子!分隔符 機器指令 五大類語句 表示式語句 函式呼叫 控制語句 7種 復合語句 空語句 預處理指令不是語句 print 是個標準庫函式不是關鍵字 sizeof 不是函式 而是操作符 include 和 define 是預處理指令...
統計單詞個數 藍橋杯 C 動態規劃
給出乙個長度不超過200的由小寫英文本母組成的字母串 約定 該字串以每行20個字母的方式輸入,且保證每行一定為20個 要求將此字母串分成k份 1 k 40 第一行有二個正整數 p,k p表示字串的行數 k表示分為k個部分。接下來的p行,每行均有20個字元。再接下來有乙個正整數s,表示字典中單詞個數。...