給定一個序列,如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; }