給定乙個十進位制正整數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 ...