1:快速幂
求a的b方mol c
伪代码23333
·································································································································································································································································································
long long ans=1;
int ha(long long a,long long b,long long c)
{
a=a%c;
while(b!=0)
{
if(b&1)
ans=(ans*a)%c;
a=(a*a)%c;
b=b>>1;
}
return ans;
}
int main()
{
long long a,b,c,m;
scanf("%lld%lld%lld",&a,&b,&c);
m=ha(a,b,c);
printf("%lld",m);
return 0;
}
··································································································································································································································································································
加强版
long long n,m,p;
long long b(long long x,long long y)
{
long long ans=0;
while(y>0)
{
if(y&1)
ans=(ans+x)%p;
y=y>>1;
x=(x+x)%p;
}
return ans;
}
long long a(long long x,long long y)
{
long long ans=1;
while(y>0)
{
if(y&1)
ans=b(ans,x);
y=y>>1;
x=b(x,x);
}
return ans;
}
int main()
{
cin>>n>>m>>p;
cout<<a(n+1,m);
return 0;
}