题目链接:http://poj.org/problem?id=1995
题解:
本题采用常规的循环,由于数据范围与时间限制,不能AC,因此采用快速幂解决
AC代码:
#include <iostream>
#include <algorithm>
using namespace std;
typedef long long ll;
ll mod_pow(ll x, ll n, ll mod){
ll res = 1;
while( n > 0 ){
if( n & 1 ) res = res * x % mod;
x = x * x % mod;
n >>= 1;
}
return res;
}
int main() {
int Z, M, H, a, b;
cin >> Z;
while (Z--) {
cin >> M >> H;
ll ans =0;
while (H--) {
cin >> a >> b;
ans += mod_pow(a, b, M);
}
cout << ans % M <<endl;
}
return 0;
}
附:快速幂练习题:https://blog.csdn.net/gzu_zb/article/details/90229343