给定一个序列,如12345 56789 1011121314等,输出对其取余9的结果。html
那么咱们须要明白一个定理,一个序列对一个数的取余结果等于它各位之和取余那个数的结果。证实彷佛是这样∑i=0nai10i≡∑i=0nai1i=∑i=0nai(mod9)(不会)。c++
而后咱们只须要求出每一位的和便可,因为他们之间的差为1,因此能够用等差数列求和公式。但这里涉及了两个问题,一个就是/2的问题,由于两者:l+r r-l+1的和为2r+1,spa
因此当r为奇数时2r+1为奇数,r为偶数时2r+1也为奇数,而一个奇数只能由一个奇数和一个偶数之和组成,因此一定是一个奇数一个偶数,因此将偶数除以二;第二个问题则是code
long long溢出的问题,因此咱们分别存储,并进行先模再模的公式,最后输出便可。htm
1.数论必定要动手算一算样例blog
2.注意思考巧妙的方法和处理的办法,多推导ci
代码it
#include<bits/stdc++.h> using namespace std; long long l,r; int q; int main(){ cin>>q; while(q--){ cin>>l>>r; long long a=l+r; long long b=r-l+1; if(a%2==0) a/=2; else b/=2; long long ans=((a%9)*(b%9))%9; cout<<ans<<endl; } return 0; }