二分乘法。。。。其实。。

二分乘法主要是解决乘法的结果远超int范围,但需要的结果有取余的乘法运算

LL multi(LL a,LL b,LL m)
{
    LL ans = 0;
    a %= m;
    while(b)
    {
        if(b & 1)
        {
            ans = (ans + a) % m;
            b--;
        }
        b >>= 1;
        a = (a + a) % m;
    }
    return ans;
}
View Code

 

posted @ 2018-04-30 08:17  shuai_hui  阅读(189)  评论(0编辑  收藏  举报