快速幂算法是一种高效计算整数幂的算法,它能在对数时间内计算 ( x^n )(给定一个底数 ( x ) 以及一个非负整数 ( n ))。常规方法需要 ( O(n) ) 的时间复杂度,而快速幂算法将时间复杂度降低到 ( O(\log n) )。这个算法的主要思想是利用幂的性质,将指数不断折半。
当我们计算 ( x^n ) 时,可以根据 ( n ) 的奇偶性来简化计算:
下面是快速幂算法的一个简单实现,返回 ( x^n \mod \text{mod} )。
#include <iostream> using namespace std; long long quickPow(long long x, long long n, long long mod) { long long result = 1; x = x % mod; // 将 x 约简到 mod 方法下 while (n > 0) { if (n % 2 == 1) { // 如果 n 是奇数 result = (result * x) % mod; // 将结果乘上当前基数 } x = (x * x) % mod; // 基数自身平方 n /= 2; // 指数除以 2 } return result; } int main() { long long x = 3; long long n = 10; long long mod = 1000000007; cout << "Result: " << quickPow(x, n, mod) << endl; // 输出 3^10 % 1000000007 return 0; }
result
为 1(因为任何数的 0 次幂为 1)。result
乘以基数 ( x )。快速幂算法广泛应用于:
标签: 来源:
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。