版权声明:侵删 [email protected] https://blog.csdn.net/weixin_43350051/article/details/88084803
快速幂(qpow)
注:替代pow函数,pow函数是浮点型时候才用的 如果用在int或其他上可能会错误,qpow(快速幂)不仅运算快而且更精确!
代码:
#include<stdio.h>
typedef long long int ll;
ll qpow(ll a,ll b,ll q) //代码是传了三个变量 最后q为mod
{
ll ans;
ans=1; //ans表示要输出的结果
while(b){
if(b%2){ //解决如果幂数b为奇数时 例如:5^7 将其转换成5*5^6
ans=ans*a%q;
} //整个循环要放在while里面进行多次计算
a=a*a%q;
b/=2;
}
return ans;
}
int main()
{
ll a,b,q;
scanf("%lld%lld%lld",&a,&b,&q);
ll ans=qpow(a,b,q);
printf("%lld\n",ans%q); //求幂数最后再取下余 不取也行 但……
return 0;
}