几分钟前我刚刚发过求这题的证明过程
实际上就是调不出来才怀疑证明思路的
欲求l(l+1)(l+2)…… (r−1)r的拼接所成的数mod 9
如:l=2,r=5时,该数为2345
用等差数列求和公式可知:
(r−l+1)l+2(r−l+1)(r−l)
用以上公式计算出的数mod 9即为所求
感觉思路没问题,但是WA了三个点
#include<iostream>
#define int long long
using namespace std;
const int MAXN=1e6+10;
int num,ans;
signed main()
{
int q;
cin>>q;
while(q--){
int l,r;
cin>>l>>r;
int len=r-l+1;
int left=l*len;
int right=(len*(len-1))/2;
cout<<(left+right)%9<<endl;
}
return 0;
}