不是听说 long long 溢出会出现段错误吗,那为什么下面这段光速乘的代码不会出现段错误?
long long
typedef long long ll; ll qmul(ll a,ll b,ll mod){ return (a*b-(ll)((long double)a/mod*b+0.5)*mod+mod)%mod; }
另外请问这个 +0.5 是什么原理?
+0.5