0 - 9的100——1000次方

本文介绍了一种处理大整数幂运算的方法,通过数组来存储大整数,并使用逐位相乘及进位处理的方式来实现大整数的指数运算。文章提供了完整的C++代码示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

#include <iostream>
#define MAX 1000
using namespace std;
//小整数的整数次方
/*
int PowerWithUnsignedExponent(int base, int exponent)
{
    if(exponent == 0)
    return 1;
    if(exponent == 1)
    return base;
    int result = PowerWithUnsignedExponent(base, exponent >> 1);
    result *= result;
    if(exponent & 0x1 == 1)
    result *= base;
    return result;
}
*/
//利用数组转换大整数,每位先乘以2,再处理进位
int main()
{
    int base;
    cin >> base;
    int exponent;
    cin >> exponent;
    int *result = new int[MAX + 10]();
    result[0] = 1;
    int nHighestPos = 0;
    for(int i = 0; i < exponent; ++i)
    {
        //按位乘以base
        for(int j = 0; j < exponent; ++j)
        {
            result[j] *= base;
        }
        //处理进位
        for(int k = 0; k < exponent; ++k)
        {
            if(result[k] >= 10)
            {
                result[k + 1] += result[k] / 10;
                result[k] = result[k] % 10;
            }
            if(result[k])
            nHighestPos = k;
        }
    }
    for(int i = nHighestPos; 0 <= i; --i)
    cout << result[i];
    delete [] result;
    return 0;
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值