对 $2^{61}-1$ 快速取模的实现存档。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
template <typename T>
constexpr uint64_t mod(T res) {
    constexpr uint64_t mod_p = (1ull << 61) - 1;
    res = (res >> 61) + (res & mod_p);
    res = (res >> 61) + (res & mod_p);

    if (res == mod_p) {
        return 0;
    }
    return res;
}