c++中n次方怎么表示
作者:野牛程序员:2025-11-10 17:32:10C++阅读 2252
c++中n次方怎么表示
/*
C++ 中 n 次方示例演示
1) pow():使用 <cmath>,适合一般情况
2) fastPow():整数快速幂,避免 pow() 浮点误差
3) fastPowMod():快速幂取模,常用于竞赛
*/
#include <iostream>
#include <cmath>
using namespace std;
/*---------------------------------
整数快速幂
适合:计算 base^exp,整数精确
---------------------------------*/
long long fastPow(long long base, long long exp) {
long long ans = 1;
while (exp > 0) {
if (exp & 1) ans *= base; // exp 奇数时乘一次 base
base *= base; // 底数翻倍
exp >>= 1; // exp 右移一位
}
return ans;
}
/*---------------------------------
整数快速幂 + 取模
常用于:大数运算、算法竞赛
---------------------------------*/
long long fastPowMod(long long base, long long exp, long long mod) {
long long ans = 1 % mod;
while (exp > 0) {
if (exp & 1) ans = ans * base % mod; // 乘时取模
base = base * base % mod; // 底数翻倍取模
exp >>= 1;
}
return ans;
}
int main() {
/*-------------------------
pow() 用法
注意:返回 double,整数可能有误差
--------------------------*/
double a = 2;
double b = 3;
double r = pow(a, b); // 2^3
cout << "pow: " << r << endl; // 输出 8
/*-------------------------
fastPow() 用法(整数精确)
--------------------------*/
long long r2 = fastPow(2, 10); // 2^10
cout << "fastPow: " << r2 << endl; // 输出 1024
/*-------------------------
fastPowMod() 用法
计算 (base^exp) % mod
--------------------------*/
long long r3 = fastPowMod(2, 10, 1000); // (2^10) % 1000
cout << "fastPowMod: " << r3 << endl; // 输出 24
return 0;
}野牛程序员教少儿编程与信息学奥赛-微信|电话:15892516892

- 上一篇:cin.get()函数
- 下一篇:c++整数拆分
