45pts求调,WA on #8,#11~20
查看原帖
45pts求调,WA on #8,#11~20
820387
haoguorui_python楼主2024/10/5 17:12

代码如下:

#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

2024/10/5 17:12
加载中...