Digit sum(The Preliminary Contest for ICPC Asia Shanghai 2019)
测试数据
输入:
2101082
输出:
Case #1:46
Case #2:13
代码
#include<iostream>#include<cstdio>
using namespace std;constint N =1e6+5;//1<=N<=10^6int a[11][N];//a[i][j]存放i进制下从1到j每个数各位数求和后的总和intmain(){int t, n, b;scanf("%d",&t);//t组测试样例for(int i =2; i <=10; i++){//从2到10进制打表for(int j =1; j < N; j++){int sum =0;int p = j;while(p >0){
sum += p % i;
p /= i;}//sum得到当前数字在i进制下各位数字的和
a[i][j]= a[i][j-1]+ sum;//在同一进制下前一数字基础上加和}}for(int k =1; k <= t; k++){scanf("%d%d",&n,&b);//N的值 b进制printf("Case #%d: %d\n", k, a[b][n]);//输出b进制下的要求答案}return0;}