1. 程式人生 > >POJ1995 Raising Modulo Numbers

POJ1995 Raising Modulo Numbers

題目描述

題目解釋:有的人喜歡看充滿小姐姐的畫報,有的人喜歡玩遊戲,而我喜歡求(A1B1+A2B2+...+AHBH)modM(A_1^{B_1}+A_2^{B_2}+ ... +A_H^{B_H})mod M

輸入 第一行為組數,對於每組資料,第一行為M,第二行為該組資料的A、B的個數。

3
16
4
2 3
3 4
4 5
5 6
36123
1
2374859 3029382
17
1
3 18132

輸出: 每組數輸出一個結果

2
13195
13

求快速冪。

#include <iostream>
#include
<stdlib.h>
#include <string.h> using namespace std; typedef long long ll; ll mul(ll a, ll b, ll p){ ll ans = 1 % p; for(;b;b >>= 1) { if(b & 1) ans = (ll)(ans * a) % p; a = (ll)a * a % p; } return ans; } int main(){ int N; cin>>
N; while(N--){ ll ans = 0; ll p;int m; scanf("%lld %d",&p,&m); while(m--){ ll a,b; scanf("%lld %lld", &a, &b); ans += mul(a, b, p); } printf("%lld\n",ans % p); } return 0; }