Raising Modulo Numbers(poj1995)

大水题,直接快速幂

#include<iostream>
#include<cstdio>
using namespace std;
int ksm(int a,int b,int m)
{
    a=a%m;
    int ans=1;
    while(b>0){
        if(b&1){ans=(ans*a)%m;}
        a=(a*a)%m;
        b>>=1;
    }
    return ans;
}
int main()
{
    int z;
    scanf("%d",&z);
    while(z--){
        int m,h,x,y,ans=0;
        scanf("%d%d",&m,&h);
        for(int i=1;i<=h;i++){
            scanf("%d%d",&x,&y);
            ans=(ans+ksm(x,y,m))%m;
        }
        printf("%d\n",ans);
    }
}

猜你喜欢

转载自blog.csdn.net/qq_41336270/article/details/84071666