首页 > 其他 > 详细

快速幂

时间:2019-07-07 09:55:12      阅读:75      评论:0      收藏:0      [点我收藏+]

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

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的二进制最后一位
    }
}

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

快速幂

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

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!