51nod 1009 數字1的數量 做題總結

2021-10-02 21:08:50 字數 641 閱讀 8012

給定乙個十進位制正整數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思路:分位考慮,例如11111.

先考慮個位的情況:1111 1

個位為1,而箇位之前的情況有0~1111一共1112種。

十位:111 1 1

十位為1,而十位之前的情況:

1.當前三位為111時個位只有兩種情況0,1;

2.當前三位不為111時前三位一共有0~110這111種情況

而此時個位有0~9這10種情況。

故當10位為1時一共有111*10+2=1112種情況。

……以此類推從而得出關於當前位為1的結論。

同理可得當前位為0時和當前位》1時的結論。

ac**:

#include

using

namespace std;

int n,ans;

int main (

) cout<}

僅為自己理解,如有紕漏歡迎指出。

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 ...

51 nod 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 輸入n 1 ...