95求助
查看原帖
95求助
448940
hanzhang666楼主2022/7/17 15:26
#include<bits/stdc++.h>
#define mod 1000000007
#define int long long
using namespace std;
inline int read(){
	int x=0,f=1;
	char c=getchar();
	while(c<'0'||c>'9'){
		if(c=='-') f=-1;
		c=getchar();
	}
	while(c>='0'&&c<='9'){
		x=x*10+c-'0';
		c=getchar();
	}
	return x*f;
}
int num[20],cnt,f[20],p[20];
int calc(int n){
	memset(f,0,sizeof(f));
	int ans=0;
	cnt=0;
	while(n) num[++cnt]=n%10,n/=10;
	int tmp=0;
	for(int i=cnt;i>=1;i--){
		f[i]=10*f[i+1]%mod;
		ans=(ans+45*f[i+1]%mod*p[i-1]%mod)%mod;
		for(int j=0;j<num[i];j++){
			(f[i]+=1)%=mod;
			(ans+=(tmp+j)*p[i-1]%mod)%=mod;
		}
		tmp+=num[i];
	}
	(ans+=tmp)%=mod;
	return ans;
}
signed main(){
	int T=read();
	int l,r;
	p[0]=1;
	for(int i=1;i<20;i++){
		p[i]=10*p[i-1]%mod;
	}
	while(T--){
		l=read(),r=read();
		cout<<(calc(r)-calc(l-1)+mod)%mod<<endl;
	}
}

#18 WA

2022/7/17 15:26
加载中...