快速幂:
long long did(long long a,long long b)
{
if (b==0) return 1LL;
if (b%2==1) return (did(a,b/2)%m)*(did(a,b/2)%m)*(a%m);
else return (did(a,b/2)%m)*(did(a,b/2)%m);
}
#include <iostream>
#include <stdio.h>using namespace std;
long long t,m,h,a,b,ans;
long long did(long long a,long long b)
{
if (b==0) return 1LL;
if (b%2==1) return (did(a,b/2)%m)*(did(a,b/2)%m)*(a%m);
else return (did(a,b/2)%m)*(did(a,b/2)%m);
}
int main()
{ freopen("in.txt","r",stdin);
cin>>t;
for (int j=1;j<=t;j++)
{
cin>>m>>h;
ans=0;
for (int i=1;i<=h;i++)
{
cin>>a>>b;
ans=ans%m+did(a,b)%m;
}
cout<<ans%m<<endl;
}
return 0;
}
题意:求(A1B1+A2B2+ ... +AHBH)mod M.
快速幂