快速幂取模(递归加非递归)
2019-04-13 21:12发布
生成海报
递归:
#include
#include
#include
#include
#include
using namespace std;
typedef long long int ll;
ll pow(ll x,ll y,ll p)
{
if(y==0)
return 1;
else
{
ll res=pow(x,y>>1,p);
res=res*res%p;
if(y&1)
{
res=res*x%p;
}
return res%p;
}
}
int main()
{
ll x,y,p;
while(cin>>x>>y>>p)
{
ll ans=pow(x,y,p);
cout<
非递归:
#include
#include
#include
#include
#include
using namespace std;
typedef long long int ll;
ll pow(ll x,ll y,ll p)
{
ll r=1,base=x;
while(y)
{
if(y&1)
{
r=r*base%p;
}
base=base*base%p;
y>>=1;
}
return r;
}
int main()
{
ll x,y,p;
while(cin>>x>>y>>p)
{
ll sum=pow(x,y,p);
printf("%lld
",sum);
}
}
打开微信“扫一扫”,打开网页后点击屏幕右上角分享按钮