快速幂
石大快速幂
a ^ b = a * a * a * ...... * a
= a ^ ( b / 2 ) * a ^ ( b / 2 )
=.......此处可以拆分下去(递归)
or
b = 2 ^ 0 * x+2 ^ 1 * y+.........
下面是第二种方法的实现
#include<iostream>
typedef long long ll;
using namespace std;
ll a,b,p;
ll fastpow(ll a,ll b,ll p)
{
ll ans=1%p;
while(b)
{
if(b&1)
ans=(ll)ans*a%p;
a=(ll)a*a%p;
b>>=1;
}
return ans;
}
int main()
{
cin>>a>>b>>p;
cout<<fastpow(a,b,p);
return 0;
}
作者:qbning
-------------------------------------------
个性签名:曾经的我们空有一颗望海的心,却从没为前往大海做过真正的努力
如果觉得这篇文章对你有小小的帮助的话,记得在右下角点个“推荐”哦,博主在此感谢!