WA#18#20 求调
查看原帖
WA#18#20 求调
868052
xiaobaozii楼主2024/3/19 13:36
#include<bits/stdc++.h>
using namespace std;
const long long N=1e9+7;
long long t,q,n,ans[3][21],m,x,sum=0;
int main (){
	cin>>t;
	while(t--){
		sum=0;
		memset(ans,0,sizeof(ans));
		cin>>q>>n;
    	q-=1;
   		for(int i=0;i<=9;i++) {
    		x=i;m=1;
    	    while(m<=q) {
            	long long a=q/(m*10),b=q/m%10,c=q%m;
            	if(x){
              		if(b>x)ans[2][i]+=(a+1)*m;
              		if(b==x)ans[2][i]+=a*m+c+1;
              		if(b<x)ans[2][i]+=a*m;
            	}
           	 	else{
           	  	    if(b)ans[2][i]+=a*m;
          	    	else ans[2][i]+=(a-1)*m+c+1;
            	}
           		m*=10;
        	}
    	}
	    for(int i=0;i<=9;i++){
	        x=i;m=1;
	        while(m<=n){
	            long long a=n/(m*10),b=n/m%10,c=n%m;
	            if(x){
	                if(b>x)ans[1][i]+=(a+1)*m;
	                if(b==x)ans[1][i]+=a*m+c+1;
	                if(b<x)ans[1][i]+=a*m;
	            } else{
	                if(b)ans[1][i]+=a*m;
	                else ans[1][i]+=(a-1)*m+c+1;
	            }
	            m*=10;
	        }
	    }
	    for(int i=0;i<=9;i++) {
	       sum+=((ans[1][i]-ans[2][i])*i+N)%N;
	    }
	    cout<<sum%N<<"\n";
	}
    return 0;
}
2024/3/19 13:36
加载中...