快速幂

写在前面

快速幂说白了就是实现一个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;
}
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容