编程精确计算2的N次方

来源:百度知道 编辑:UC知道 时间:2024/06/02 06:14:27
N是介于100和1000之间的整数.如输入n=200,而输出的结果很大,如何解决溢出问题??
用long型绝对溢出,好像应该转换....
#include<iostream.h>
int main()
{
long s=2;
int n,i;
cin>>n;
for(i=1;i<n;i++)
{
s=s*2;
}
cout<<s<<endl;
return 0;
}

用long double得到的结果不精确,会用到科学计数法,我要精确的啊

用long型变量来接受结果~~
把代码贴出来我看看

用数组
#include<iostream>
#include<iomanip>
using namespace std;
int longInt[100];
int main()
{
int size = 1;//位数
int c;//进位
int n;//n次方
int i;
cin>>n;
longInt[0] = 1;
for(i = 0; i < n; i++)
{
c = 0;
for(int j = 0; j < size; j++)
{
longInt[j] = longInt[j]*2 + c;
c = longInt[j]/1000;
if(longInt[j] >= 1000)
{

longInt[j] = longInt[j]%1000;
if(j == size-1)
{
size ++;
}
}
}
}
for(i = size - 1; i > -1; i--)
{
if(i != size-1)
{
cout<<setw(3)<<setfill('0');
}
cout<<longInt[i];

}
cout<<endl;

return 0;
}

用 long double
最大的