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
#include
#include
#include
#include
#include
#include
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;
}

相关