Poj 1995 幂取模

经典幂取模,递归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;

}

posted on 2012-03-13 09:37  Inpeace7  阅读(159)  评论(0编辑  收藏  举报

导航