Uva1640(統計數字出現的次數)

2022-06-05 23:06:09 字數 567 閱讀 7337

題意:

統計兩個整數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 #include4

using

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 的演算法。這是自己...