//方法一
#include<iostream>
using namespace std;
const MAXS = 1000
short a[MAXS]={1,0},b[MAXS]={1,0},sum[MAXS]={0};
int Fsum(){
for(int j = 0;j<MAXS;j++){
sum[j]=0;
}
for(int j = 0;j<MAXS;j++){
sum[j+1]=(a[j]+b[j]+sum[j])/10;
sum[j]=(a[j]+b[j]+sum[j])%10;
}
for(int j = 0;j<MAXS;j++){
a[j]=b[j];
b[j]=sum[j];
}
return 0;
}
int main()
{
short n;
cin>>n;
if(n == 1){cout<<"0";return 0;}
if(n == 2 ){cout<<"0 1";return 0;}
if(n == 3){cout<<"0 1 1";return 0;}
cout<<"0 1 1 ";
for(int i = 4;i<=n;i++){
Fsum();
for(int j = MAXS;j>=0;j--){
if(sum[j])
cout<<sum[j];
}
cout<<" ";
}
return 0;
}
//方法2
#include <bits/stdc++.h>
using namespace std;
unsigned long long int a,b,c;
int main(){
short n;
cin>>n;
a=1;
b=1;
if(n == 1){cout<<"0";return 0;}
if(n == 2 ){cout<<"0 1";return 0;}
if(n == 3){cout<<"0 1 1";return 0;}
cout<<"0 1 1 ";
for(int i=4;i<=n;i++)
{
c=a+b;
a=b;
b=c;
printf("%lld ",c);//%lld是长整型
}
return 0;
}
/**
* @language: C++
* @submitTime: 2023-10-01 19:30:15
*/
斐波那契数列 高精度算法
最新推荐文章于 2024-08-04 15:26:08 发布