自学者十分不懂
#include <bits/stdc++.h>
using namespace std;
int main()
{
long long result,a,b,p;
scanf("%ld%ld%ld",&a,&b,&p);
a%=p;
for(result=1%p/*为什么要1%p,而1不行,会有1%0?*/;b>0;b>>=1)
{
if(b&1)
{
result*=a;
result%=p;
}
a=(a*a)%p;
}
printf("%ld\n",result);
return 0;
}
using namespace std;
int main()
{
long long result,a,b,p;
scanf("%ld%ld%ld",&a,&b,&p);
a%=p;
for(result=1%p/*为什么要1%p,而1不行,会有1%0?*/;b>0;b>>=1)
{
if(b&1)
{
result*=a;
result%=p;
}
a=(a*a)%p;
}
printf("%ld\n",result);
return 0;
}
这是为什么一定要用1%p
#C++工程师#