相关疑难解决方法(0)

C++ 中大型 mod 的模取幂失败

这是我用于计算的代码(n^p)%mod。不幸的是,当我从方法调用它时,它对于mod(在我的情况下mod = 10000000000ULL)的大值失败main()。任何的想法; 为什么?

ull powMod(ull n, ull p, ull mod) {
    ull ans = 1;
    n = n%mod;
    while(p) {
        if(p%2 == 1) {
            ans = (ans*n)%mod;
        }
        n = (n*n)%mod;
        p /= 2;
    }
    return ans;
}
Run Code Online (Sandbox Code Playgroud)

这里,ull是一个 typedef unsigned long long

c++ algorithm cryptography exponentiation modular-arithmetic

4
推荐指数
1
解决办法
387
查看次数