题目是求a^b mod m
AC代码:
#include <stdio.h>
#include <stdlib.h>
int main()
{
long long a,b,m,ans=1;
scanf("%lld%lld%lld",&a,&b,&m);
while(b>0){
if(b%2)ans=(ans*a)%m;
a=(a*a)%m;
b/=2;
}
printf("%lld\n",ans);
return 0;
}
WA代码:
#include <stdio.h>
#include <stdlib.h>
int main()
{
long long a,b,m,ans=1;
scanf("%lld%lld%lld",&a,&b,&m);
a=a%m;
while(b>0){
if(b%2)ans=(ans*a)%m;
a=(a*a)%m;
b/=2;
}
printf("%lld\n",ans);
return 0;
}
为什么加上一个a=a%m就错了呢,我不懂,求助大家qwq