求助
查看原帖
求助
531930
Southern_Dynasty楼主2022/7/17 15:15

为什么我的代码不吸氧就 WA 90 pts?吸氧就 AC 了。

#include<bits/stdc++.h>
#define gt getchar
#define pt putchar
#define y1 y233
#define int long long
typedef long long ll;
//typedef __int128 lll;
typedef unsigned long long ull;
const int MOD=1e9+7;
using namespace std;
inline int read(){
   	int x=0,f=1;char ch=gt();
   	while(!isdigit(ch)){if(ch=='-')f=-1;ch=gt();}
   	while(isdigit(ch)){x=(x<<1)+(x<<3)+(ch^48);ch=gt();}
	return x*f;
}
inline void print(int x){
    if(x<0)pt('-'),x=-x;
    if(x>9)print(x/10);
    pt(x%10+48);
}
inline void println(int x){
	print(x);
	pt(10);
}
int n,T,l,r;
int num[20],cnt,dp[20],p[20];
inline int calc(int x){
	memset(dp,0,sizeof(dp));
	int ans=0,tmp=0;cnt=0;
	while(x)num[++cnt]=x%10,x/=10;
	for(int i=cnt;i;--i){
		dp[i]=10*dp[i+1]%MOD;
		ans=ans+(45*dp[i+1]*p[i-1])%MOD; 
		for(int j=0;j<num[i];++j){
			dp[i]=(dp[i]+1)%MOD;
			ans=(ans+((tmp+j)*p[i-1])%MOD)%MOD;
		}
		tmp+=num[i];
	}
	ans+=tmp;
	return ans; 
}
signed main(){
	T=read();
	while(T--){
		l=read(),r=read(),p[0]=1;
		for(int i=1;i<20;++i)
			p[i]=10*p[i-1]%MOD;
		println((calc(r)-calc(l-1)+MOD)%MOD);
	}
	return 0;
}
2022/7/17 15:15
加载中...