题目 思路 首先ab中可以设b=2t1+2t2+…+2tk(二进制) 即将b转换为二进制表示 b&1就是判断b的二进制表示中第0位上的数是否为1,若为1,b&1=true,反之b&1=false b&1也可以用来判断奇数和偶数,b&1=true时为奇数,反之b&1=false时为偶数 快速幂模板 int qmi(int a, int k, int p) // 求a^k mod p { int res = 1 % p; while (k) { if (k & 1) res = (LL)res * a % p; a = (LL)a * a % p; k >>= 1; } return res; } 代码 #include<iostream> using namespace std; typedef long long LL; int qmi(int a,int b,int p){ int res=1%p; while(b){ if(b&1){ res=(LL)res*a%p; } a=(LL)a*a%p; b=b>>1; } return res; } int main(){ int a,b,p; cin>>a>>b>>p; cout<<qmi(a,b,p)<<endl; return 0; }