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