poj1995 Raising Modulo Numbers
http://poj.org/problem?id=1995
快速幂的模板,用来练习快速幂
快速幂模板:
int quick(int a,int b,int c) { int ans=1;a=a%c; while(b!=0){ if(b&1) ans=(ans*a)%c; b>>=1; a=(a*a)%c; } return ans; }
so……
(我也不知道为什么要写这道题题解)
ac代码:
#pragma G++ optimize(2) #include<iostream> #include<cstdio> #include<cstring> #include<algorithm> #include<cmath> #include<queue> #include<vector> using namespace std; #define REG register #define REP(i,x,y) for(REG int i=x;i<=y;i++) #define UP(i,x,y) for(REG int i=x;i>=y;i--) #define IN inline #define ll long long int quick(int a,int b,int c) { int ans=1;a=a%c; while(b!=0){ if(b&1) ans=(ans*a)%c; b>>=1; a=(a*a)%c; } return ans; } int main(){ int t; scanf("%d",&t); while(t--){ int ans=0,a,b,n,mod; scanf("%d %d",&mod,&n); REP(i,1,n){ scanf("%d %d",&a,&b); ans+=quick(a,b,mod);//听说这样更快 } printf("%d\n",ans%mod); } return 0; }