快速幂的求法
实验室oj名 a^b
关于对于a的b次方对p取模 实验室oj名 a^b
首先可以a和b对p取模减轻运算量。
在尝试将b/2,a= a*a%p来进将n次的运算量降低到logn的运算量。
但是一定要注意的是要使用long long不然数据可能会溢出导致结果错误。
#include<stdio.h>
int main()
{
long long a, b, p, answer = 1;
scanf("%d %d %d", &a, &b, &p);
a = a % p;
b = b % p;
while(b){
if(b % 2){
answer = answer * a % p;
}
b = b / 2;
a = a * a % p;
}
answer = answer % p; //注意假如b为0的情况
printf("%lld", answer);
return 0;
}
本文介绍了一种高效计算a的b次方对p取模的方法——快速幂算法,并提供了详细的实现步骤及注意事项,如如何减少运算量和避免数据溢出。
3372

被折叠的 条评论
为什么被折叠?



