码迷,mamicode.com
首页 > 其他好文 > 详细

快速幂

时间:2019-10-18 22:00:43      阅读:68      评论:0      收藏:0      [点我收藏+]

标签:amp   合并   pre   mode   逻辑运算符   nbsp   turn   运算   判断   

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

模板:

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;

}

 

快速幂

标签:amp   合并   pre   mode   逻辑运算符   nbsp   turn   运算   判断   

原文地址:https://www.cnblogs.com/ylrwj/p/10969797.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!