同余模公式:
(a+b)%m=(a%m+b%m)%m
(a*b)%m=(a%m*b%m)%m
/*
* POJ_1995.cpp
*
* Created on: 2013年11月19日
* Author: Administrator
*/
#include <iostream>
#include <cstdio>
using namespace std;
typedef long long ll;
/**
* 快速幂取模
* 求a^b%m的值
*/
ll qpow(ll a, ll b, ll m) {
ll ans = 1;
while (b) {
if (b & 1) {
ans *= a;
ans %= m;
}
a *= a;
a %= m;
b >>= 1;
}
return ans;
}
int main() {
int z;
scanf("%d", &z);
while (z--) {
ll m, h;
scanf("%lld%lld", &m, &h);
ll ans = 0;
while (h--) {
ll a, b;
scanf("%lld%lld", &a, &b);
ans += qpow(a, b, m);//这里应用到了同余模公式:(a+b)%m=(a%m+b%m)%m
ans %= m;
}
printf("%lld\n", ans);
}
return 0;
}