C++计算高次幂谁可以给一个简单的程序,计算a的b次方.a可以在0~100;b在0~1000;如果上限大的话,都会超过long long 类型,是不是要用数组进行运算.麻烦大神给个简单点的程序计算这个,适当加一点
来源:学生作业帮助网 编辑:作业帮 时间:2024/06/29 01:43:30
![C++计算高次幂谁可以给一个简单的程序,计算a的b次方.a可以在0~100;b在0~1000;如果上限大的话,都会超过long long 类型,是不是要用数组进行运算.麻烦大神给个简单点的程序计算这个,适当加一点](/uploads/image/z/7063086-30-6.jpg?t=C%2B%2B%E8%AE%A1%E7%AE%97%E9%AB%98%E6%AC%A1%E5%B9%82%E8%B0%81%E5%8F%AF%E4%BB%A5%E7%BB%99%E4%B8%80%E4%B8%AA%E7%AE%80%E5%8D%95%E7%9A%84%E7%A8%8B%E5%BA%8F%2C%E8%AE%A1%E7%AE%97a%E7%9A%84b%E6%AC%A1%E6%96%B9.a%E5%8F%AF%E4%BB%A5%E5%9C%A80%7E100%EF%BC%9Bb%E5%9C%A80%7E1000%EF%BC%9B%E5%A6%82%E6%9E%9C%E4%B8%8A%E9%99%90%E5%A4%A7%E7%9A%84%E8%AF%9D%2C%E9%83%BD%E4%BC%9A%E8%B6%85%E8%BF%87long+long+%E7%B1%BB%E5%9E%8B%2C%E6%98%AF%E4%B8%8D%E6%98%AF%E8%A6%81%E7%94%A8%E6%95%B0%E7%BB%84%E8%BF%9B%E8%A1%8C%E8%BF%90%E7%AE%97.%E9%BA%BB%E7%83%A6%E5%A4%A7%E7%A5%9E%E7%BB%99%E4%B8%AA%E7%AE%80%E5%8D%95%E7%82%B9%E7%9A%84%E7%A8%8B%E5%BA%8F%E8%AE%A1%E7%AE%97%E8%BF%99%E4%B8%AA%2C%E9%80%82%E5%BD%93%E5%8A%A0%E4%B8%80%E7%82%B9)
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