自学者十分不懂

#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;
}
这是为什么一定要用1%p
#C++工程师#
全部评论
因为p可能=1
1 回复
分享
发布于 2019-11-24 11:08

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务