本题就是求(A1^B1+
A2^B2+ … +AH^BH)mod M.
由于数太大
我们也需要每次运算都对m取余
因为大于m的部分不会影响结果!
#include<iostream>
using namespace std;
#define ll long long
ll quickpow(ll x, ll n,ll h) {
ll res = 1;
while (n > 0) {
if (n & 1) res = res * x%h;
x = (x * x)%h;
n = (n >> 1);
}
return res;
}
int main() {
int m;
cin >> m;
for (int i = 0; i < m; ++i) {
ll n;
cin >> n;
int h;
cin >> h;
const int t = h;
int a[1000][2];
ll sum = 0;
for (int j = 0; j < h; ++j) {
cin >> a[j][0] >> a[j][1];
sum += quickpow(a[j][0], a[j][1],n);
}
cout << sum % n<<endl;
}
return 0;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)