当前位置:首页C++ > 正文

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
野牛程序员教少儿编程与信息学竞赛-微信|电话:15892516892
  • c++中n次方怎么表示
  • 相关推荐

    最新推荐

    热门点击