演算法課 數字統計問題

2022-06-20 00:00:19 字數 1964 閱讀 3294

題目描述

給定一本書,其中包含n頁,計算出書的全部頁碼中用到了多少個數字0…9?頁碼從1開始

乙個整數n,代表頁碼總數。(1<=n<=1e9)

十行,每行乙個整數,分別表示0~9每個數字出現的次數

1/*2

數字統計問題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*/

view code

數字統計問題

一本書的頁碼從自然數 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 演算法設計 給定表示書的總...