1009 數字1的數量(思維)

2021-10-08 06:01:08 字數 704 閱讀 4788

給定乙個十進位制正整數n,寫下從1開始,到n的所有正數,計算出其**現所有1的個數。

例如:n = 12,包含了5個1。1,10,12共包含3個1,11包含2個1,總共5個1。

輸入輸入n(1 <= n <= 10^9)

輸出輸出包含1的個數

輸入樣例

12輸出樣例

5乙個多位數21905:

個位:它出現1的數為:1 ~ 21901,一共 2190 - 0 + 1 = 2191

十位:它出現1的數為:1x ~ 2181x (x 從0到9)一共:(218 - 0 + 1)10 = 2190

百位:它出現1的數為:1xx ~ 211xx ,一共:(21 - 0 + 1) 100 = 2200

千位:它出現1的數為:1*** ~ 11*** 和 21000 ~ 21905 ,一共:(1 - 0 + 1)*1000 + (905 - 0 + 1)= 2000 + 906 = 2906

萬位:它出現1的數為:1***x ~ 1***x,一共:10000

如果當前位是0或者大於1時,那麼當前結果只與高位有關,如果是1的話,那麼還要把低位的也考慮進去。

#includeusing namespace std;

#define ll long long

int main()

cout

}

1009 數字1的數量

給定乙個十進位制正整數n,寫下從1開始,到n的所有正數,計算出其中出現所有1的個數。例如 n 12,包含了5個1。1,10,12共包含3個1,11包含2個1,總共5個1。input 輸入n 1 n 10 9 output 輸出包含1的個數 input示例 12output示例 5思路 這個題是按照 ...

1009 數字1的數量

1009 數字1的數量 基準時間限制 1 秒 空間限制 131072 kb 分值 5 難度 1級演算法題 收藏 關注 給定乙個十進位制正整數n,寫下從1開始,到n的所有正數,計算出其中出現所有1的個數。例如 n 12,包含了5個1。1,10,12共包含3個1,11包含2個1,總共5個1。input ...

51nod 1009 數字1的數量

1009 數字1的數量 基準時間限制 1 秒 空間限制 131072 kb 分值 5 難度 1級演算法題 收藏 關注 給定乙個十進位制正整數n,寫下從1開始,到n的所有正數,計算出其中出現所有1的個數。例如 n 12,包含了5個1。1,10,12共包含3個1,11包含2個1,總共5個1。input ...