这道题没想出来,借鉴了https://blog.csdn.net/richenyunqi/article/details/87891111
大佬的算法
#include <iostream>
#include <string>
using namespace std;
typedef long long ll;
const ll mod = 1000000007;
const int maxn = 1e5 + 5;
string n;
ll sum = 0;
ll vec[maxn];
int main(){
cin>>n;
int len = n.length();
vec[len - 1] = 1;
for(int i = len - 2;i >= 0;i--){
vec[i] = (vec[i + 1] * 10 + 1) % mod;
}
ll res = 0;
for(int i = len - 1;i >= 0;i--){
if(n[i] != '0'){
res += vec[i] * (n[i] - '0');
sum = (sum + res) % mod;
}
}
printf("%lld",sum);
system("pause");
return 0;
}