今天(2023/8/31)靠 Barrett 算法 
这个算法的目的是,在固定模数 % 更快。
这个算法的精髓是估算。首先问题可以转化成 
为什么是 
现在用这个近似值估算:
假设这个 
最后算答案:
特判一下就好了,多做一个减法而已。
当然我们找不到那么大的 
#define ull unsigned long long 
#define ui128 __uint128_t
struct Barrett {
    ull d;
    ui128 m;
    Barrett(ull _d):d(_d),m((((ui128)(1)<<64)/d)) {}
    ull operator ()(ull a) {
        ull w=(m*a)>>64;
        w=a-w*d;
        if(w>=d) w-=d;
        return w;
    }
};