数学方法样例没过
查看原帖
数学方法样例没过
658786
STUDENT00楼主2022/9/21 19:33

世界上最简单易懂的代码:

#include<bits/stdc++.h>
using namespace std;
const long long mod=1e9+7;
int t,ll,lr;
long long l,r,ans;
char sl[20],sr[20];
int lltoa(char *s,long long num){
	int k=0;
	while(num){
		s[k++]=num%10;
		num/=10;
	}
	return k;
}
long long sp(char s,int k){
	//if(!k) return (1+s)*s/2;
	return (long long)pow(10,k-1)%mod*s*45%mod+(long long)pow(10,k)%mod*(1+s)*s/2%mod;
}
long long work(char *s,int len){
	long long ans=0;
	for(int i=0;i<len;i++) ans=(ans+sp(s[i],i))%mod;
	return ans;
}
int main(){
	scanf("%d",&t);
	while(t--){
		scanf("%lld%lld",&l,&r);
		l--;
		ll=lltoa(sl,l);
		lr=lltoa(sr,r);
		ans=work(sr,lr)-work(sl,ll);
		ans=(ans%mod+mod)%mod;
		printf("%lld\n",ans);
	}
	return 0;
}
2022/9/21 19:33
加载中...