龟速运算

当你急需一种算法来实现“加”这种运算,但因种种原因无法打出加号,也无法复制一个加号,那么我就强烈推荐:

\(\Huge\text{龟速加!}\)

int ret1, ret2;
int add(int a, int b)
{
    if(b == 0) return a;
    if(a == 0) return b;
    ret1 = a ^ b;
    ret2 = a & b;
    ret2 <<= 1;
    return add(ret1, ret2);
}

屁用没有,还贼慢,是 O(log n) 的


当你急需一种算法来实现“大数带模乘”这种运算,但因种种原因无法打出乘号,也无法复制一个乘号,且乘后会爆 long long,那么我就强烈推荐:

\(\Huge\text{龟速乘!}\)

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

不如 int_128 和高精度

posted @ 2025-02-14 00:00  yuzihang  阅读(12)  评论(0)    收藏  举报