題目描述
給定一本書,其中包含n頁,計算出書的全部頁碼中用到了多少個數字0…9?頁碼從1開始
乙個整數n,代表頁碼總數。(1<=n<=1e9)
十行,每行乙個整數,分別表示0~9每個數字出現的次數
1/*2view code數字統計問題3*/
45 #include6 #include7 #include8 #include9
using
namespace
std;
10 typedef long
long
ll;11
12const
int n = 20;13
14 ll f[20][10][10
] ;15 ll ans[10],base[10],sum[11][11
];16
intlimit[n] , len , number;
17char
str[n] , t[n] ;
1819
void
input()
2627
void
init()
3637
/*處理個位數時的方案數,預處理,為轉移做準備
*/38
for( int num = 0 ; num <= 9 ;num ++)
4142
/*直接轉移情況
*/43
for( int len = 2 ; len <= len ; len ++)49}
50 f[len][n1][n1] +=base[len];51}
52}5354}55
5657
void
solve()65}
66}6768
//處理上限問題: 1****
69for( int i = len ; i >= 1 ; i--)76}
7778
//(1)0000 ~ **** 這一部分就是有列舉的後面的位置數字和 +1
7980
//ans[str[i]-'0'] += ( number % base[i] + 1 );
8182 number = atoi( (t + 1) + (len-i+1
) );
83 ans[str[i]-'
0'] += number + 1;84
}8586}
87void
output()
90int
main()
9198
99100
/*101
102123456789
103104
96021948
105130589849
106100589849
10796589849
10896089849
10996029849
11096022849
11196022049
11296021959
11396021949
114115
21116
1172
11813
1194
1202
1212
1222
1232
1242
1252
1262
127128
987654321
129130
780521262
131891632373
132891632364
133891632284
134891631584
135891625584
136891575584
137891175584
138888175584
139868175584
140*/
數字統計問題
一本書的頁碼從自然數 1 開始順序編碼直到自然數 n。書的頁碼按照通常的習慣編排,每個頁碼都不含多餘的前導數字 0。例如,第 6 頁用數字 6 表示,而不是 06 或 006 等。數字計數問題要求對給定書的總頁碼 n,計算出書的全部頁碼中分別用到多少次數字0,1,2,9。程式設計任務 給定表示書的總...
數字統計問題
演算法設計 給定表示書的總頁碼的十進位制整數n 1 n 10 9 計算書的全部頁碼中分別用到多少次數字數字0,1,2,9.輸入 11 輸出 141 1111 11題解 數論 找規律 看到這種題,dfs把數重新組合複雜度比直接暴力列舉還要高,沒用。只能找規律,重新劃分區間才有可能。首先根據排列組合原理...
數字統計問題
1 問題描述 一本書的頁碼從自然數1 開始順序編碼直到自然數n。書的頁碼按照通常的習慣編排,每個頁碼都不含多餘的前導數字0。例如,第6 頁用數字6 表示,而不是06 或006 等。數字計數問題要求對給定書的總頁碼n,計算出書的全部頁碼中分別用到多少次數字0,1,2,9。2 演算法設計 給定表示書的總...