位运算专题练习

CH0101 a^b 快速幂

注意有模数为1,指数为0的情况,所以输出的时候还要%mod。

#include<bits/stdc++.h>
#define rg register
#define il inline
#define co const
template<class T>il T read(){
    rg T data=0,w=1;
    rg char ch=getchar();
    while(!isdigit(ch)){
        if(ch=='-') w=-1;
        ch=getchar();
    }
    while(isdigit(ch))
        data=data*10+ch-'0',ch=getchar();
    return data*w;
}
template<class T>il T read(rg T&x){
    return x=read<T>();
}
typedef long long ll;

int mod;
int mul(int x,int y){
    return (ll)x*y%mod;
}
int qpow(int x,int k){
    int re=1;
    while(k){
        if(k&1) re=mul(re,x);
        x=mul(x,x),k>>=1;
    }
    return re;
}
int main(){
//  freopen(".in","r",stdin);
//  freopen(".out","w",stdout);
    int x,k;
    read(x),read(k),read(mod);
    printf("%d\n",qpow(x%mod,k)%mod);
    return 0;
}

猜你喜欢

转载自www.cnblogs.com/autoint/p/10386029.html
今日推荐