題意:
統計兩個整數a,b之間各個數字(0~9)出現的次數,如1024和1032,他們之間的數字有1024 1025 1026 1027 1028 1029 1030 1031 1032 總共有10個0,10個1,3個3等等。
解法:這類問題的一般步驟都是先用f(n,d)計算出0~n中d數字出現的次數,那麼答案就是f(b,d)-f(a-1,d)
下面程式中的注釋為(1,2974)的第一層(未遞迴)解釋,遞迴後同理
1-2974 拆分為1-2970 和 2971-2974
1 #include2 #include3 #include4using
namespace
std;
5int
l, r;
6int a[11], b[11];7
8void solve(int n, int
m) 21
if (x) solve(x - 1, m * 10
);22}23
24int
main()
35return0;
36 }
UVA 1640 分塊 數字統計 DFS
紫書中給出的解法是分塊,非常重要的思想,但是網上題解給出的更加簡單dfs 統計每位數對答案的貢獻即可。注意邊界 具體見 include include include include include include include include include include include in...
統計數字出現次數
description 某次科研調查時得到了n個自然數,每個數均不超過1500000000 1.5 10 9 已知不相同的數不超過10000個,現在需要統計這些自然數各自出現的次數,並按照自然數從小到大的順序輸出統計結果。input 包含多個測試資料,每個包含n 1行 第1行是整數n,表示自然數的個...
關於統計數字問題的演算法
一本書的頁碼從自然數1開始順序編碼直到自然數n。書的頁碼按照通常的習慣編排,每個頁碼都不含多餘的前導數字0。例如第6頁用6表示而不是06或006。數字統計問題要求對給定書的總頁碼,計算出書的全部頁碼中分別用到多少次數字0,1,2,3,9。這個題目有個最容易想到的n log10 n 的演算法。這是自己...