需要求斐波那契数列的第5000项,基本上1000项左右long long 就爆炸了。
看代码,高精度还得去练一练。
复习一下斐波那契数列的通项公式:
代码的话,感觉不太好些,精度的问题,带考究
作者:匿名用户
链接:https://www.zhihu.com/question/25217301/answer/158291644
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
#include <iostream>
using namespace std;
int a[5005][5005];
int len = 1;
void hp(int k) // 高精度
{
// 个位数
for(int i = 1; i <= len; i++){
a[k][i] = a[k-1][i] + a[k-2][i];
}
// 进位
for(int i = 1; i <= len; i++){
if(a[k][i] >= 10){
a[k][i+1] += a[k][i] / 10;
a[k][i] = a[k][i] % 10;
if(a[k][len+1]) len++;
}
}
}
int main()
{
int n;
cin >> n;
a[1][1] = 1;
a[2][1] = 2;
for(int i = 3; i <= n; i++){
hp(i);
}
for(int i = len ; i >= 1; i--){
cout << a[n][i];
}
return 0;
}