龟速乘与快速幂

知识概览 

龟速乘类似于快速幂。快速幂用乘法来实现乘方,龟速乘用加法来实现乘法。


快速幂代码

int qmi(int a, int k, int p)
{
    int res = 1;
    while (k)
    {
        if (k & 1) res = res * a % p;
        a = a * a % p;
        k >>= 1;
    }
    
    return res;
}

例题展示

题目链接

https://www.acwing.com/problem/content/92/

代码

#include 

typedef long long LL;

LL qadd(LL a, LL b, LL p)
{
    LL res = 0;
    while (b)
    {
        if (b & 1) res = (res + a) % p;
        a = (a + a) % p;
        b >>= 1;
    }
    return res;
}

int main()
{
    LL a, b, p;
    scanf("%lld%lld%lld", &a, &b, &p);
    printf("%lld\n", qadd(a, b, p));
    
    return 0;
}

参考资料

  1. AcWing算法基础课

你可能感兴趣的:(经典算法总结,位运算,算法,数据结构,龟速乘,快速加,快速幂,位运算)