P1226 【模板】快速幂
P1226 【模板】快速幂
快速幂介绍
快速幂,用于快速求次幂的方法。
原理
用递归实现
pow(a,b)=pow(a,b/2)*pow(a,b/2)
当然,若b为奇数,则b/2的结果实际为(b-1)/2,所以还要在此基础上*a。
特别的,当b为0时返回1(边界情况)
代码
#include<bits/stdc++.h>
using namespace std;
long long ksm(int a,int b,int p){
if(b==0) return 1;//边界
if(b%2==1){
int res=ksm(a,b/2,p);
return (long long)res*res%p*a%p;//每进行一次乘法就取余,保证不会溢出。
}
int res=ksm(a,b/2,p);
return (long long)res*res%p;
}
int main(){
int a,p,b;
cin>>a>>b>>p;
printf("%d^%d mod %d=%d",a,b,p,ksm(a,b,p));
//注意输出格式。
return 0;
}

浙公网安备 33010602011771号