C++计算高次幂谁可以给一个简单的程序,计算a的b次方.a可以在0~100;b在0~1000;如果上限大的话,都会超过long long 类型,是不是要用数组进行运算.麻烦大神给个简单点的程序计算这个,适当加一点
来源:学生作业帮助网 编辑:六六作业网 时间:2024/11/27 11:58:22
C++计算高次幂谁可以给一个简单的程序,计算a的b次方.a可以在0~100;b在0~1000;如果上限大的话,都会超过long long 类型,是不是要用数组进行运算.麻烦大神给个简单点的程序计算这个,适当加一点
C++计算高次幂
谁可以给一个简单的程序,计算a的b次方.a可以在0~100;b在0~1000;如果上限大的话,都会超过long long 类型,是不是要用数组进行运算.
麻烦大神给个简单点的程序计算这个,适当加一点注释吧,我是新手
C++计算高次幂谁可以给一个简单的程序,计算a的b次方.a可以在0~100;b在0~1000;如果上限大的话,都会超过long long 类型,是不是要用数组进行运算.麻烦大神给个简单点的程序计算这个,适当加一点
#include<iostream>
using namespace std;
#define MAXN 10001 //a可以在0~100;b在0~1000,所以a^b最大为10^10000,不会超过10001位数
void modRes(int res[], int n);
int main()
{
int a,b,i;
int res[MAXN]={0};//存放结果的数组,可以看成一个大数
cout<<"input a and b:";
cin>>a>>b;
res[0]=a;
for(i=1;i<b;++i) {
for(int j=0;j<MAXN-1;++j) {
res[j] *= a;//大数的每一位乘以a
}
modRes(res, MAXN);//进位
}
for(i=MAXN-1;i>=0;--i) {//高位多余的0不需要输出
if(res[i] != 0) break;
}
cout<<a<<"^"<<b<<"=";
for(;i>=0;--i) {//从第一个不是0的高位开始输出
cout<<res[i];
}
cout<<endl;
return 0;
}
void modRes(int res[], int n) {//从低位开始向高位进位
for(int i=0;i<n-1;++i) {
res[i+1] += (res[i]/10);
res[i] %=10;
}
}
输出结果为:
input a and b:23 6
23^6=148035889
Press any key to continue