经典算法

快速幂算法(取模)

快速幂算法

// 小牛编程
long long fast_pow(long long a, long long b) {
    long long result = 1;
    while (b) {
        if (b & 1) // b % 2 == 1
            result = (result * a);
        a = a * a;
        b >>= 1;
    }
    return result;
}

快速幂算法取模 a^b % p

// 小牛编程
long long pow_mod(long long a, long long b, long long p) {
    long long result = 1;
    a %= p;
    while (b) {
        if (b & 1) // b % 2 == 1
            result = (result * a) % p;
        a = a * a % p;
        b >>= 1;
    }
    return result;
}