有一些毒瘤题,数据大小不光会炸(int),有时甚至会炸(long long)。这时一个(O(1))的防爆乘就很重要了
(a*b%p)可以转化为(a*b-[a*b/p]*p) 这里用了(long double)舍弃低位保留18位的特性
最后不要忘记特判
inline ll C(ll a,ll b,ll p){ a%=p,b%=p; ll c=a*b-(ll)((long double)a*b/p+0.5)*p; return c<0?c+p:c; }