大数斐波那契数列的求法(大数相加)
2011-05-08 15:38
232 查看
这两种办法在文章部分已经都有提及,基本思想都是大数相加,一种是字符串相加,一种是数组保存位数
第一种,字符串相加
直接用一个字符串相加函数,计算结果保存到字符串数组中
View Code
第一种,字符串相加
直接用一个字符串相加函数,计算结果保存到字符串数组中
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; }
相关文章推荐