快速幂

作者: 华雨欣 | 来源:发表于2021-03-29 22:41 被阅读0次

    写在前面

    快速幂说白了就是实现一个Math.pow(),虽然Java的库中有提供计算幂的方法,但是实际使用中很可能会出现溢出的问题或者对答案取模的问题,所以快速幂就是在计算幂结果的过程中完成取模操作,同时以log(y)的复杂度快速求解x ^ y的值。

    用途

    对于需要求x ^ y并且需要对结果取模的题目都适用,使用快速幂来取代默认的pow()方法

    代码模板

    //计算m ^ k % p
    public int qmi(int m, int k, int p){
        int res = 1, t = m;
        while(k > 0){
            if( (k & 1) == 1){
                res = res * t % p;
            }
            t = t * t % p;
            k = k >> 1;
        }
        return res;
    }
    

    相关文章

      网友评论

          本文标题:快速幂

          本文链接:https://www.haomeiwen.com/subject/mnmihltx.html