关于快速幂取模的问题

#include<iostream>
using namespace std;
typedef long long LL;
LL Pow(LL a,LL b,LL p){
    a%=p;
    LL res=1;
    while(b){
        if(b&1){
            res=(res*a)%p;
            res%=p;
        }
            a=(a*a)%p;
        b>>=1;
    }
    return res;
}
int main(){
    LL a,b,p,res;
    cin>>a>>b>>p;
    res=Pow(a,b,p);
        //res%=p;    不加这个只过了80%
    cout<<res<<endl;
    return 0;
}

我有一个疑惑,明明我每次计算res之后,都会模一次p。
但是这样却只是通过了80%的数据。
然而当我在输出前让res再对p取模一次,就能ac,这是什么情况?
全部评论
考虑一下 p=1 b=0 的时候
2 回复 分享
发布于 2020-02-14 18:27

相关推荐

06-15 18:44
黄淮学院 Java
Lynn012:如果是居民楼还是算了吧,看着有点野呢
点赞 评论 收藏
分享
评论
2
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务