Description
求斐波那契数列第N项。 3 \le N \le 10003≤N≤1000。
Input
一个正整数N。
Output
斐波那契数列第N项。
Samples
输入数据 1
30
输出数据 1
832040
输入数据 2
100
输出数据 2
354224848179261915075
Tips
1,1,2,3,5,8,…1,1,2,3,5,8,…
#include <bits/stdc++.h>
using namespace std;
const int mx=110;
int n;
int a[mx],b[mx],c[mx];
int main()
{
cin>>n;
for (int i=0; i<=mx-1; i++) a[i]=b[i]=c[i]=0;
a[0]=b[0]=1;
for (int i=3; i<=n; i++)
{
for (int i=0; i<=mx-1; i++)c[i]=0;
for (int i=0; i<=mx-1; i++)c[i]=a[i]+b[i];
for (int i=0; i<=mx-2; i++)
{
int x=c[i];
c[i]=x%10;
c[i+1]+=x/10;
}
for (int i=0; i<=mx-1; i++)a[i]=b[i];
for (int i=0; i<=mx-1; i++)b[i]=c[i];
}
int i=mx-1;
while (c[i]==0 && i>0) i--;
for (;i>=0; i--) cout<<c[i];
return 0;
}