设x∈[1,n],当x不包含最高位时,9+90*2+900*3……+最多位的位数和。
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
int mod=1000000000;
int main()
{
char s[15];
while(cin>>s)
{
int len=strlen(s);
ll n=0;
for(int i=0;i<len;i++)
n=n*10+s[i]-'0';
ll mo=1;
for(int i=1;i<len;i++)
mo*=10;
ll a=(n-mo+1)*len,b=0,k=9;
for(int i=0;i<len-1;i++)
{
b+=k*(i+1);
k*=10;
}
cout<<a+b<<endl;
}
return 0;
}
本文介绍了一种计算从1到n所有整数位数总和的方法,并提供了完整的C++实现代码。通过分析不同位数的贡献,实现了高效计算。
302

被折叠的 条评论
为什么被折叠?



