经典幂取模,递归172ms,递推110ms
#include <iostream>
#include <stdio.h>
using namespace std;
/*long long exmod(long long a,long long b,long long n)
{
long long ret=1;
long long temp=a;
while(b)
{
if(b&0x1)
ret=ret*temp%n;
temp=temp*temp%n;
b>>=1;
}
return ret;
}*/
__int64 exmod(__int64 a, __int64 n, __int64 b)
{
__int64 t;
if(n==0) return 1%b;
if(n==1) return a%b;
t=exmod(a,n/2,b);
t=t*t%b;
if((n&1)==1) t=t*a%b;
return t;
}
int main()
{
int cas,i,n,a,b,ss,j;
long long t;
freopen("in.txt","r",stdin);
scanf("%d",&cas);
for(i=1;i<=cas;i++)
{
scanf("%d%d",&n,&ss);
t=0;
for(j=1;j<=ss;j++)
{
scanf("%d%d",&a,&b);
t+=exmod(a,b,n);
t%=n;
}
printf("%d\n",t);
}
return 0;
}