C++2的N次方 (100〈=N〈=1000)怎么解决数据溢出问题?高手请喝茶!

</br>... </br> 展开
 我来答
ecrasyy
2013-03-29 · TA获得超过309个赞
知道小有建树答主
回答量:308
采纳率:0%
帮助的人:178万
展开全部
用vector<unsigned char> vbigNumber来存储,这样多大都不怕了,每个unsigned char存储一个位。
举例如下:数字-12345.98
在vbigNumber中,vbigNumber[0]就存储负号
依此类推,vbigNumber的最后一位就存储8
也就是说,以字符串的形式来存储大数。
但是数学运算的话,需要自己做处理,不能直接使用整型的+ - × / 了。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
libinhao1111
2013-03-29 · TA获得超过1014个赞
知道小有建树答主
回答量:425
采纳率:0%
帮助的人:559万
展开全部
代码如下
#include <iostream>
using namespace std;
int main()
{
double a = 1;
int plus = 0;
char str[1000];
int pow;

str[999] = '1'; cin>>pow;
for(int i =0;i<999;i++)
{
str[i] = '0';
}

for(int i=0;i<pow;i++)
{
for(int j=999; j>=0; j--)
{
int tmp = 0;
tmp = (str[j] - 48) * 2 % 10 + plus;
plus = (str[j] - 48) * 2 / 10;
str[j] = tmp + 48;
}
}
int printIndex = 0;
while(str[printIndex] == '0')
printIndex ++ ;

for(int i =printIndex;i<1000;i++)
{
cout<<str[i];
}
cout<<endl;
}
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
帐号已注销
2013-03-29 · TA获得超过380个赞
知道小有建树答主
回答量:618
采纳率:50%
帮助的人:229万
展开全部
#include<stdio.h>
#include<memory.h>
const int maxlen=2000;
int a[maxlen],i,n,m;
void times(int n,int m)
{
int i,j,t;
a[0]=1;a[1]=1;
for (i=1;i<=m;i++)//n的m次方
{
t=0;
for (j=1;j<=a[0];j++)
{
a[j]=a[j]*n+t;
t=a[j]/10;
a[j]=a[j]%10;
}
while (t!=0)
{
a[++a[0]]=t%10;
t=t/10;
}
}
}
int main()
{
printf("Please enter n and m(n^m):");
scanf("%d%d",&n,&m);
memset(a,0,sizeof(a));
times(n,m);
printf("%d^%d=",n,m);
for (i=a[0];i>=1;i--) printf("%d",a[i]);
printf("\n");
return 0;
}
用数组来存储。数组的每个成员存储一部分
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2013-03-30
展开全部
内存空间太小,还有你用用new开辟个也行
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
乱舞大螃蟹
2013-03-29 · TA获得超过189个赞
知道答主
回答量:205
采纳率:0%
帮助的人:111万
展开全部
用double型
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式