MnZn求助,为什么会WA
查看原帖
MnZn求助,为什么会WA
429499
isletfall楼主2021/7/20 10:24
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
ll t,l,r,ans,mod=1e9+7;
ll ten[20],f[20];
ll cntl[20],cntr[20];
void work(ll x,ll *cnt){
	ll num[20]={0};
	num[0]=0;
	while(x)
	{
	num[++num[0]]=x%10;
	x/=10;
	}
	for(int i=num[0];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]+=ten[i-1];
		ll num2=0;
		for(int j=i-1;j>=1;j--)
		num2=num2*10+num[j];
		cnt[num[i]]+=num2+1;
		cnt[0]-=ten[i-1];
	}
}
int main()
{
	scanf("%d",&t);
	for(int i=1;i<=t;i++) {
	ans=0;
	scanf("%lld%lld",&l,&r);
	ten[0]=1;
	for(int i=1;i<=13;i++)
	{
	f[i]=f[i-1]*10+ten[i-1];
	ten[i]=10*ten[i-1];}
	work(l-1,cntl);
	work(r,cntr);
	for(int i=0;i<=9;i++)
	ans+=((cntr[i]-cntl[i])*i);
	ans%=mod;
	printf("%d\n",ans);
	for(int i=0;i<=9;i++)
	cntr[i]=0,cntl[i]=0;} 
	return 0;
}
2021/7/20 10:24
加载中...