题目描述
对于给定的数字n,求1到n所有的数字,其十进制位的所有位的和是多少。
例如 n=12,则其答案为1+2+3+4+5+6+7+8+9+(1+0)+(1+1)+(1+2)=51
输入描述
第一行:输入一个正整数t,表示多组测试的样例组数。
接下来t行:每行输入一个正整数n,表述如题。
输出描述
对于每个n,输出一行一个答案。
输入样例
7
12
1
2
3
1434
2024
200000
输出样例
51
1
3
6
18465
28170
4600002
数据描述
30%的数据下:1≤t,n≤10^3
100%的数据下:1≤t≤10^5,1≤n≤10^6
AC代码
#include<bits/stdc++.h>
using namespace std;
const int m=1e6;
int a[m+8];
int main(){
for(int i=1;i<=m;i++){
int t=i,sum=0;
while(t){
sum+=t%10;
t/=10;
}
a[i]=a[i-1]+sum;
}
int t;
cin>>t;
while(t--){
int n;
scanf("%d",&n);
printf("%d\n",a[n]);
}
return 0;
}