代码如下:
#include <bits/stdc++.h>
using namespace std;
long long a,b;
long long t[50],f[50];
long long cnt1[50],cnt2[50];
long long mod=1e9 + 7;
void s(long long n,long long *cnt){
long long num[50]={0};
long long l=0;
while (n){
num[++l]=n%10;
n=n/10;
}
for (int i=l;i>=1;i--){
for (int j=0;j<=9;j++){
cnt[j]+=f[i-1]*num[i];
}
for (int j=0;j<num[i];j++){
cnt[j]+=t[i-1];
}
long long numx=0;
for (int j=i-1;j>=1;j--){
numx=numx*10+num[j];
}
cnt[num[i]]+=numx+1;
cnt[0]-=t[i-1];
}
}
int main(){
int T;
cin>>T;
while (T--){
memset(t,0,sizeof(t));
memset(f,0,sizeof(f));
memset(cnt1,0,sizeof(cnt1));
memset(cnt2,0,sizeof(cnt2));
cin>>a>>b;
t[0]=1;
for (int i=1;i<=15;i++){
f[i]=f[i-1]*10+t[i-1];
t[i]=10*t[i-1];
}
s(a-1,cnt1);
s(b,cnt2);
long long ans=0;
for (int i=1;i<=9;i++){
ans+=(cnt2[i]-cnt1[i])*i%mod;
}
cout<<ans;
cout<<endl;
}
return 0;
}
望解答!
WA on #8,#11~20