P4942小凱的數字

給定一個序列,如12345 56789 1011121314等,輸出對其取餘9的結果。html

那麼咱們須要明白一個定理,一個序列對一個數的取餘結果等於它各位之和取餘那個數的結果。證實彷佛是這樣i=0nai10ii=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;
} 
相關文章
相關標籤/搜索