洛谷最短路题的讨论中看到的,学习了一下。计算\(xy \mod p\)

long long quick_mul(long long x,long long y,long long p)
{
    if (y==0) return 0;
    if (y==1) return x%p;
    long long re;
    re=quick_mul(x,y>>1,p);
    if ((y&1)==1) return (re+re+x)%p;
             else return (re+re)%p;
}

思想就是\(ab = 2*(a\frac{b}{2})\)

如果动机不是规避溢出的话,把取模去掉,会快很多。

posted on 2016-12-03 22:58  yanhh  阅读(262)  评论(0编辑  收藏  举报