1. 程式人生 > >神奇的操作--O(1)快速乘

神奇的操作--O(1)快速乘

col pan urn line nbsp 快速乘 font long div

從同機房大佬那裏聽來的...

用O(1)時間求出兩個相乘超過long long的數的取摸的結果

神奇的操作...

inline long long multi(long long x,long long y,long long mod)
{
    long long tmp=(x*y-(long long)((long double)x/mod*y+1.0e-8)*mod);
    return tmp<0 ? tmp+mod : tmp;
}

神奇的操作--O(1)快速乘