题意:求% mod 。
  思路: ,假设我们要求 
 那么我们可以转换成
, 也就是
 我们可以发现当 b 的二进制位的某一位是 1 时,我们需要做一个累乘 ans 的操作,否则我们需要 a 的指数乘 2 操作。这样的操作就是快速幂。 假设我们现在右有 
using namespace std;
typedef pair<int,int> P;
typedef long long ll;
const int Max_n=2e5+10;
int q_pow(int a,int b,int mod){
    ll ans=1,res=a%mod;
    while(b){
        if(b&1) ans=ans*res%mod;
        res=res*res%mod;
        b>>=1;
    }
    return ans%mod;
}
int main(){
    int a,b,mod;
    scanf("%d%d%d",&a,&b,&mod);
    printf("%d\n",q_pow(a,b,mod));
    return 0;
}
 
京公网安备 11010502036488号