# L. Digit sum
# 题意
求进制下
# 思路
进制下有
考虑预处理,对于每个询问查询时间。 预处理时间约为
# 代码
#include <iostream>
#include <algorithm>
using namespace std;
const int maxn = 1e6 + 10;
using ll = long long;
ll arr[11][maxn];
int main()
{
for(int i = 2; i <= 10; ++i) {
for(int j = 0; i * j + i < maxn; ++j) {
for(int k = 0; k < i; ++k) {
arr[i][i * j + k] = arr[i][j] + k;
}
}
}
for(int i = 2; i <= 10; ++i) {
for(int j = 1; j < maxn; ++j) {
arr[i][j] += arr[i][j - 1];
}
}
int T;
int kase = 0;
cin >> T;
while(T--) {
int n, b;
cin >> n >> b;
cout << "Case #" << (++kase) << ": ";
cout << arr[b][n] << '\n';
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31