/*斐波那契数列,又称黄金分割数列,指的是这样一个数列: 0、1、1、2、3、5、8、13、21、…… 在数学上,斐波纳契数列被定义如下: F0=0,F1=1, Fn=F(n-1)+F(n-2)(n>=2,n∈N*) 现在问题是:输入n,0≤n ≤1000,计算该数列第n项的值。 */ #include<iostream> using namespace std; int main() { int n,i; long long a,b,c; while(cin>>n) { if(n==0||n==1) { cout<<n<<endl; continue; } a=0; b=1; for(i=2;i<=n;i++) { c=a+b; a=b; b=c; } cout<<c<<endl; } return 0; }
下面是其他的写法:
C语言:
#include<stdio.h> int main() { int n,i; long long a,b,c; while(scanf("%d",&n)!=EOF) { if(n==0||n==1) { printf("%d\n",n); continue; } a=0; b=1; for(i=2;i<=n;i++) { c=a+b; a=b; b=c; } printf("%I64d\n",c);//???OJ???%lld? } return 0; }
下面是离线计算的代码:
#include<iostream> using namespace std; int main() { int n,i; long long f[80]={0,1}; for(i=2;i<=70;i++) f[i]=f[i-1]+f[i-2]; while(cin>>n) { cout<<f[n]<<endl; } return 0; }