【題解】
000..0~999..9 (n個9)
則0~9中每個數字出現的次數都是n*10^(n-1),即每個數字出現次數相同。
但是因為不含前導0.
所以要把多算的0給去掉。
具體的,設n這個數字的長度為l,則需要減去1111....1(l個1)個多餘的0. 然後做個數字dp就好。
詳見:
【**】
#include
#include
#include
using
namespace std;
string s;
int _pow =1;
int cnt[10]
;int
get_num
(int l,
int r)
temp++
;return temp;
}int
main()
cnt[si]+=
get_num
(i+1
,len-1)
; _pow=_pow/10;
}int more0 =0;
for(
int i=
1;i <= len;i++
) cnt[0]
-=more0;
for(
int i =
0;i <=
9;i++
)return0;
}
1 1統計數字問題(詳解)
題目描述 從1頁到n頁,統計0到9出現的次數 include include includeusing namespace std int main int n cin n for int i 1 i n i for int i 0 i 9 i 這個公式可以這麼理解 當n 21時,要減去的0有 10...
統計數字問題
在王曉東編著的 演算法設計與實驗題解 中看到的這個問題,問題描述如下 一本書的頁碼從自然數1開始順序編碼直到自然數n。書的頁碼按照通常的習慣編排,每個頁碼都不含多餘的前導數字0。例如第6頁用6表示而不是06或006。數字統計問題要求對給定書的總頁碼,計算出書的全部頁碼中分別用到多少次數字0,1,2,...
統計數字問題
問題描述如下 一本書的頁碼從自然數1開始順序編碼直到自然數n。書的頁碼按照通常的習慣編排,每個頁碼都不含多餘的前導數字0。例如第6頁用6表示而不是06或006。數字統計問題要求對給定書的總頁碼,計算出書的全部頁碼中分別用到多少次數字0,1,2,3,9。演算法設計與分析習題 分析 考察由0,1,2.9...