首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

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

2013-02-02 
重载运算符进行高精度运算题目要求算出 Fibonacci数列(第一项是1,第二项也是1,从第三项开始,每项都是它前

重载运算符进行高精度运算
题目要求算出 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 

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

热点排行