`
kyzaqlx
  • 浏览: 2002 次
社区版块
存档分类
最新评论

快速幂

阅读更多

题目:求 a^n % p。

分析:a^n = a^(2^0 * n[0] + 2^1 * n[1] + 2^2 * n[2] + ... + 2^(t-1) * n[t-1])

                 = (a^(2^0))^n[0] * (a^(2^1))^n[1] * (a^(2^2))^n[2] * ... * (a^(2^(t-1)))^n[t-1]

           其中,t = log(n),n[i] = 0或1

代码:

public class OJ {
    public static void main(String[] args) {
        OJ oj = new OJ();
        System.out.println(oj.power(2147483647, 2147483647, 17));
    }
    
    private long power(long a, long n, long p) {
        long ans = 1;
        long tmp = a % p;
        while (0 != n) {
            if (0 != (1 & n)) {
                ans = ans * tmp % p;
            }
            
            n >>= 1;
            tmp = tmp * tmp % p;
        }
        
        return ans;
    }
}

 

分享到:
评论

相关推荐

    C语言快速幂取模算法小结

    本文实例汇总了C语言实现的快速幂取模算法,是比较常见的算法。分享给大家供大家参考之用。具体如下: 首先,所谓的快速幂,实际上是快速幂取模的缩写,简单的说,就是快速的求一个幂式的模(余)。在程序设计过程中,...

    yxy版c++教程 浅谈矩阵快速幂

    矩阵快速幂与C++实现 矩阵快速幂是一种高效的算法,用于计算矩阵的幂运算。该算法基于二进制表示法,通过将幂运算分解为小幂运算,从而大大减少了计算次数。在C++中,矩阵快速幂可以通过模板实现,提高了计算效率。...

    矩阵乘法必用算法快速幂基础程序pascal

    矩阵快速幂算法是快速幂算法的一种扩展,主要用于计算矩阵的幂。其基本思路与快速幂类似,但将标量的乘法替换为矩阵乘法,将标量的平方替换为矩阵的平方。 #### 示例代码解析 给定的 Pascal 代码实现了一个简单的...

    提高篇 第六部分 数学基础 第1章 快速幂_codes.rar

    快速幂是计算机科学中一种高效的计算大整数乘法的算法,尤其在处理涉及幂运算的问题时,如求解一个数的某个幂次方。它广泛应用于编程竞赛,如NOIP(全国青少年信息学奥林匹克联赛)和信奥比赛,以及使用C++等编程...

    算法思想:快速幂算法介绍

    ### 快速幂算法详解 #### 一、算法概述与应用场景 快速幂算法是一种高效的计算幂的方法,尤其在处理大整数的幂运算时显得尤为突出。相较于传统的连乘法,快速幂的时间复杂度仅为O(logN),极大地提高了计算效率。...

    MATLAB中,求模q下的快速幂,即(a^m)modq,函数qmi.m

    MATLAB中,求模q下的快速幂,即(a^m)modq,一个函数qmi.m,按要求传入参数调用就可以用,含参数使用注释。 MATLAB中,求模q下的快速幂,即(a^m)modq,一个函数,按要求传入参数调用就可以用。

    简单快速幂. python

    简单快速幂,python实现,只包括一个power函数,即插即用 power(x,n) x: 幂底、 n: 指数 return: 幂计算结果

    算法-欧拉定理(洛谷-P5091)(十进制快速幂实现)(包含源程序).rar

    这种方法与二进制快速幂本质相同,只是处理位的方式不同,对于理解上可能更为直观,但效率上不如二进制快速幂。 在编程竞赛平台洛谷的P5091题目中,很可能要求参赛者编写一个程序,利用快速幂算法来解决与欧拉定理...

    快速幂+相关知识点.zip

    快速幂+相关知识点.zip快速幂+相关知识点.zip快速幂+相关知识点.zip快速幂+相关知识点.zip快速幂+相关知识点.zip快速幂+相关知识点.zip快速幂+相关知识点.zip快速幂+相关知识点.zip快速幂+相关知识点.zip快速幂+相关...

    C++快速幂取模.cpp

    C++快速幂取模代码,可根据需要自行调整优化,刷题的时候计算溢出可以用它解决,算法入门代码,可以直接复制使用

    快速幂:一种经过优化的算法

    快速幂:一种经过优化的算法快速幂:一种经过优化的算法

    快速幂快速幂快速幂cc

    快速幂是一种在计算密集型领域,特别是在计算机编程和算法竞赛中广泛应用的高效计算技术。它主要用来求解大型整数的幂次运算,比如 \(a^n\),通过一系列巧妙的数学变换,将原本时间复杂度为 \(O(n)\) 的简单乘法方法...

    快速幂和矩阵快速幂1

    快速幂和矩阵快速幂 快速幂是计算 x 的 n 次幂的优化算法,避免了重复计算和溢出错误。矩阵快速幂是矩阵乘法的优化算法,用于计算矩阵的幂。 快速幂算法的实现可以使用循环和位运算来实现。例如,函数 fpowx(x, n)...

    超好的快速幂算法详解.7z

    超好的快速幂算法详解.7z超好的快速幂算法详解.7z超好的快速幂算法详解.7z超好的快速幂算法详解.7z超好的快速幂算法详解.7z超好的快速幂算法详解.7z超好的快速幂算法详解.7z超好的快速幂算法详解.7z超好的快速幂算法...

    快速幂取模 c/c++

    快速幂取模,一个运算技巧,用的着的话可以下载看下,自己做题常用它,

    ACM模板——矩阵快速幂

    矩阵快速幂的模板,需要自己根据实际题目更改矩阵大小和数据类型,以免WA和TLE。经过矩阵乘法上的稀疏矩阵优化和int64的乘法取模幂优化,效率应该比较高。视情况使用mult()函数或直接使用乘法。代码中每个函数有注释...

    带你了解快速幂,快速幂基础知识,从小白到入门

    快速幂是一种高效的算法,常用于计算大整数的幂次,尤其在计算机科学和编程竞赛中有着广泛的应用。它的核心思想是将一个大指数通过分解为二进制表示,然后利用幂运算的乘法规则来减少计算次数。下面将详细解释快速幂...

    一文彻底搞懂快速幂(原理实现、矩阵快速幂)

    快速幂是一种在计算领域,尤其是算法竞赛和计算机科学中广泛使用的高效算法,它主要用于求解大整数的幂。这个算法的基本思想是利用幂运算的性质,通过不断平方来减少计算次数,从而大大提高计算效率。在本文中,我们...

    快速幂模板

    NOIp快速幂算法 NOIp快速幂算法 NOIp快速幂算法 NOIp快速幂算法

    超详细详细的快速幂算法.zip

    很详细的快速幂算法.zip很详细的快速幂算法.zip很详细的快速幂算法.zip很详细的快速幂算法.zip很详细的快速幂算法.zip很详细的快速幂算法.zip很详细的快速幂算法.zip很详细的快速幂算法.zip很详细的快速幂算法.zip很...

Global site tag (gtag.js) - Google Analytics