有一种众所周知的 O(1)O(1)O(1) 快速乘法:
typedef long long LL; LL gsc(LL x,LL y,LL MOD) { LL ret = x*y - (LL)((long double)x/MOD*y+0.5)*MOD; return (ret%MOD+MOD)%MOD; }
它的原理是什么?是 100% 正确吗?为什么要加0.5,是哪里会有精度问题吗?
求大佬解答 /kel