快速幂

引理:积的取余=取余的积的取余

模板:

long long Mode(long long a, long long b, long long mode)

{

    long long sum = 1;

    a = a % mode;

 

    while (b > 0) {

        if (b % 2 == 1)        //判断是否是奇数,是奇数的话将多出来的数事先乘如sum

            sum = (sum * a) % mode;

 

        b /= 2;

        a = (a * a) % mode;// 不断的两两合并再取模,减小a和b的规模

    }

    return sum;

}

 

&是AND运算符,是一种逻辑运算符。

其运算规则如下:

1&1=1;真&&真=真。

1&0=0;真&&假=假。

0&1=0;假&&真=假。

0&0=0;假&&假=假。

long long Mode(long long a, long long b, long long mode)

{

    long long sum = 1;

    while (b) {

        if (b & 1) {

            sum = (sum * a) % mode;

            b--;

        }

        b /= 2;

        a = a * a % mode;

    }

    return sum;

}

 

posted @ 2019-10-18 20:57  蓉~  阅读(117)  评论(0编辑  收藏  举报