The Preliminary Contest for ICPC Asia Shanghai 2019 L. Digit sum
Posted c4lnn
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了The Preliminary Contest for ICPC Asia Shanghai 2019 L. Digit sum相关的知识,希望对你有一定的参考价值。
Link
题意:
定义 (S_b(n)) 是 (b) 进制下 (n) 的数位和
已知 (N) 和 (b)
求 (sum_{n=1}^{N}{S_b(n)})
思路:
因为测试数据很多,所以要预处理前缀和
(S_b(n)=S_b(n/b)+n\%b Longrightarrow sum[b][n]=sum[b][n/b]-sum[b][n/b-1]+n\%b+sum[b][n-1])
代码:
#include<bits/stdc++.h>
using namespace std;
int s[11][1000001]={0};
int main() {
ios::sync_with_stdio(false);
cin.tie(0);
for(int i=2;i<=10;i++)
for(int j=1;j<=1000000;j++) {
s[i][j]=s[i][j/i]+j%i+s[i][j-1];
if(j/i) s[i][j]-=s[i][j/i-1];
}
int T;cin>>T;
int n,b;
for(int i=1;i<=T;i++) {
cin>>n>>b;
cout<<"Case #"<<i<<": "<<s[b][n]<<endl;
}
return 0;
}
以上是关于The Preliminary Contest for ICPC Asia Shanghai 2019 L. Digit sum的主要内容,如果未能解决你的问题,请参考以下文章