当前位置 博文首页 > skyyemperor的博客:快速幂 & 慢速乘

    skyyemperor的博客:快速幂 & 慢速乘

    作者:[db:作者] 时间:2021-09-04 09:18

    快速幂

    快速求幂,防止爆炸
    ----- 将n转化为二进制

    • a^n % p
    ll poww(ll a, ll n, ll p) {
        ll ans = 1;
        while (n) {
            if (n & 1) ans = ans * a % p;//若不取模就去掉p
            a = a * a % p;
            n >>= 1;
        }
        return ans;
    }
    

    慢速乘

    • 对很大的数取模时,这时计算机的long long进行乘法就会爆掉
    • 将a 或 b 转化为二进制
    • a*b % p
    ll mul(ll a, ll b, ll p) {
        ll ans = 0;
        while (b) {
            if (b & 1) ans += a, ans %= p;
            a *= 2, a %= p;
            b >>= 1;
        }
        return ans;
    }
    
    
    cs
    下一篇:没有了