zoukankan      html  css  js  c++  java
  • 简单算法:快速幂

    Dev.C++简单算法:快速幂。N年没打博客了,主要是最近没时间。今天带来一篇快速幂。
    如果日常的幂运算你打一个for就好了。可是有些 题题意翻译成人话就是求解快速幂,那么O(n)绝对会被卡下去。
    这里带来一篇简单的O(log n)手打递归快速幂。老规矩,先贴代码。

    int qsm(int x,int y)//x的y次方 
    {
    	if(y==1)return x;
    	if(y%2==0)return qsm(x,y/2)*qsm(x,y/2);
    	else return qsm(x,y/2)*qsm(x,y/2)*x;
    }
    

    这里顺便加了使用方法,方便食用。急用的直接拷走就好了。
    这里解释一下

    当y=1时,易得 (x^y) 为x,所以有了第一句
    当指数是偶数时,根据(a^b)×(a^c)为a的b+c次方,所以

    $x^y$=x^y/2 × x^y/2
    

    故此第二句出现了,第三句同理。这就是这篇博客的全部内容了。


    说句闲话,我认为快速幂没必要背。像我N年没打过快速幂了,今天来打一下,也是几分钟就写出来了。
    如果你真的记不住,打一篇博客,从自己的角度理解一下,就懂了。

  • 相关阅读:
    软工人日常
    11.5
    11.4
    11.3
    11.2阅读笔记
    11.1阅读笔记
    10.31 异常
    10.30动手动脑
    10.29
    10.28
  • 原文地址:https://www.cnblogs.com/riced/p/14332472.html
Copyright © 2011-2022 走看看