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;
}
posted @ 2025-07-17 21:19  STD//  阅读(10)  评论(0)    收藏  举报