读书人

满载运算符进行高精度运算

发布时间: 2013-02-02 12:27:16 作者: rapoo

重载运算符进行高精度运算
题目要求算出 Fibonacci数列(第一项是1,第二项也是1,从第三项开始,每项都是它前面两项之和)前1001项 ,下面是我的代码,一运行就崩溃,请各位大神帮忙看看哪里错了

#include<stdio.h>
#include<string.h>
#define maxn 100
struct bign
{
int len,s[maxn];
bign()
{
memset(s,0,sizeof(s));len=1;
};
bign operator+(const bign & b) const
{
bign c;
c.len=0;
for(int i=0,g=0;g||i<(len>b.len? len:b.len);i++)
{
int x=g;
if(i<len) x+=s[i];
if(i<b.len)x+=b.s[i];
c.s[c.len++]=x%10;
g=x/10;
}
return c;
};
bign operator=(const char *num)
{
len=strlen(num);
for(int i=0;i<len;i++)
s[i]=num[len-i-1]-'0';
return *this;
};
};
bign f[1001];
int main()
{
int n;
f[1]=1;
f[2]=1;
for(int i=3;i<1002;i++)
f[i]=f[i-1]+f[i-2];
while(scanf("%d",&n)!=EOF)
{
for(i=0;i<f[n].len;i++)
printf("%d",f[n].s[i]);
printf("\n");
}
return 0;
}

附上
数据
Sample Input

1
5
6
9
101

Sample Output

1
5
8
34
573147844013817084101

[解决办法]
数组操作有无越界?

读书人网 >C++

热点推荐