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

快速幂

时间:2019-07-07 09:52:25      阅读:106      评论:0      收藏:0      [点我收藏+]

标签:思想   数字化   long   没有   ons   const   矩阵快速幂   ret   就是   

本质很简单:
将数字化为二进制(但是电脑本身已经帮我们弄好了所以就不用担心那么多),然后就是有一就乘,没有就跳过
利用到了类似初赛里考的进制转换的思想

typedef long long ll;
const int p=1e9+7;
ll ksm(ll a, ll b)
{
    a%=p;//开头得模
    ll ret=1;
    while(b)
    {
        if(b&1)ret=ret*a%p;//如果b的最后一位是1,那么久乘,乘完了记得模
        a=a*a%p;//无论上一个有没有达成,这个是位数一定要做
        b>>=1;//去掉b的二进制最后一位
    }
}

如果将乘号改为加号,则可以快速乘。如果将乘号重定义为矩阵运算就是矩阵快速幂

快速幂

标签:思想   数字化   long   没有   ons   const   矩阵快速幂   ret   就是   

原文地址:https://www.cnblogs.com/ComputerEngine/p/11145040.html

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