1. 程式人生 > >51NOD 數字1的數量

51NOD 數字1的數量

出現 正數 輸入 部分 nod 思路 題目 out pos

題目描述:

給定一個十進制正整數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的個數

題目思路:
數位dp,假設現在已經枚舉到百位之前枚舉的數字是131,那麽接下來的需要計算的所有數字都是131xx,
(也就是從是13100~13199)100個數字,那麽也就是說前面路徑131中的兩個1一共出現了100次,所以要乘起來;
後一部分dp[pos]很好理解,就是計算在13100到13199之間的數131xx在xx部分會出現的1的數目;


51NOD 數字1的數量