您的位置:首页 > 其它

大数斐波那契数列的求法(大数相加)

2011-05-08 15:38 232 查看
这两种办法在文章部分已经都有提及,基本思想都是大数相加,一种是字符串相加,一种是数组保存位数

第一种,字符串相加

直接用一个字符串相加函数,计算结果保存到字符串数组中

View Code

#include <stdio.h>
#include <stdlib.h>
#include <iostream>
#include <string.h>
using namespace std;
int fb[6001][1003];
int main(void)
{
int len[6002];
int n;
memset(fb,0,sizeof(fb));
fb[1][0] = 1;
fb[2][0] = 1;
len[1] = 1;
len[2] = 1;
for(int i=3; i<=6000; i++)
{
memcpy(fb[i],fb[i-1],sizeof(fb[i-1]));
int tlen = max(len[i-1],len[i-2]);
for(int k=0; k<tlen; k++)
{
fb[i][k] += fb[i-2][k];
}
for(int k=0; k<tlen; k++)
if( fb[i][k] >= 10 )
{
fb[i][k+1]++;
fb[i][k] %= 10;
}
if( fb[i][tlen] != 0 )
tlen++;
len[i] = tlen;
}
while( cin >> n )
{
for(int i=len
-1; i>=0; i--)
cout << fb
[i];
cout << endl;
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: