题解:P1226 【模板】快速幂
MoCaRabbit · · 题解
求
算法介绍
快速幂算法可以以
根据初一数学,如果
于是两种情况都可以递归到子任务
最后递归到
可以很好的写出代码。
inline int power(int x,int y,int p){//这是快速幂函数
if(y==0) return 1;
int tot=power(x,y>>1,p);
if(y&1) return tot*tot%p*x%p;//注意取模
else return tot*tot%p;
}
正确性证明
发现每次
代码实现
#include<bits/stdc++.h>
using namespace std;
#define int long long
int a,b,p;
inline int power(int x,int y,int p){
if(y==0) return 1;
int tot=power(x,y>>1,p);
if(y&1) return tot*tot%p*x%p;
else return tot*tot%p;
}
signed main() {
cin>>a>>b>>p;
cout<<a<<"^"<<b<<" mod "<<p<<"="<<power(a,b,p);
return 0;
}