POJ 1995(快速冪)(中文)

Description

人是不同的。有些人偷偷看充滿了有趣的女孩的雜誌,有些人在地窖裏製造原子彈,有些人喜歡使用WINDOWS,有些人喜歡數學遊戲。最新的市場調查顯示,這一細分市場目前被低估了,而且缺乏這樣的遊戲。這種遊戲因此被納入了科科達克運動。運動的遵循的規則:

每個玩家選擇兩個數字Ai和Bi,並把它們寫在一張紙條上。其他人看不到這些數字。在一個特定的時刻,所有的玩家都會向其他玩家展示他們的數字。目標是確定包括自己在內的所有玩家的所有表達的總和,並用給定的數字M確定除法後的餘數。獲勝者是首先決定正確結果的人。根據玩家的經驗,可以通過選擇更高的數字來增加難度。

你應該編寫一個程序來計算結果,並找出誰贏了這場比賽。

Input

輸入由Z賦值組成。它們的數目由出現在輸入的第一行上的單個正整數Z給出。然後分配如下。每個賦值都以包含一個整數M (1 <= M <= 45000)行開始。總數將除以這個數字。下一行包含玩家數H(1 <= H <= 45000)。接下來就是H行。在每一行上,正好有兩個數字Ai和Bi被空間隔開。兩個數不能同時等於零。

Output

對於每個組合,只有一條輸出線。在這條線上,有個數字,是表達的結果。

SampleInput

3

16

4

2 3

3 4

4 5

5 6

36123

1

23748593029382

17

1

318132

SampleOutput

2

13195

13

 

 

 

 

代碼:

 

#include<cstdio>
int power(int a,int b,int p) {
    int ans=1%p;
    for(; b; b>>=1) {
        if(b&1)ans=(long long)ans*a%p;
        a=(long long)a*a%p;
    }
    return ans;
}
int main() {
    int i,nn,p,n,ans,x,y;
    for(scanf("%d",&nn); nn>0; nn--) {
        scanf("%d%d",&p,&n);
        ans=0;
        for(i=1; i<=n; i++) {
            scanf("%d%d",&x,&y);
            ans=(ans+power(x,y,p))%p;
        }
        printf("%d\n",ans);
    }
    return 0;
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章