快速幂
-
核心思想:logk的复杂度求出ak mod p
-
将k拆成若干个2的n之和 (二进制)
-
#include<iostream>#include<algorithm>using namespace std;typedef long long LL;LL qmi(int a,int k,int p){LL res = 1 % p;while(k) //k转为二进制 还有正数 就进行{if(k & 1) res = res * a % p; //k个位为1 需要乘上k >>= 1;a = (LL)a *a %p; //强转成LL 否则会爆}return res;}int main(){int n;cin>>n;while(n--){int a,k,p;cin>>a>>k>>p;cout<<qmi(a,k,p)<<endl;}}
-