Problem Description
Fibonacci数列,定义如下:
f(1)=f(2)=1
f(n)=f(n-1)+f(n-2) n>=3。
计算第n项Fibonacci数值。
f(1)=f(2)=1
f(n)=f(n-1)+f(n-2) n>=3。
计算第n项Fibonacci数值。
Input
输入第一行为一个整数N,接下来N行为整数Pi(1<=Pi<=1000)。
Output
输出为N行,每行为对应的f(Pi)。
Sample Input
5 1 2 3 4 5
Sample Output
1 1 2 3 5
//纯模板
#include<iostream>
#include<cstring>
#include<cstdio>
using namespace std;
string add(string s1,string s2)
{
if(s1.length()<s2.length())
{
string temp=s1;
s1=s2;
s2=temp;
}
for(int i=s1.length()-1,j=s2.length ()-1; i>=0; i--,j--)
{
s1[i]=char(s1[i]+(j>=0?s2[j]-'0':0));
if(s1[i]-'0'>=10)
{
s1[i]=char((s1[i]-'0')%10+'0');
if(i)
s1[i-1]++;
else
s1='1'+s1;
}
}
return s1;
}
string str[1005];
int main()
{
int i,n;
str[1] = "1";
str[2] = "1";
for(i = 3; i<1005; i++)
{
str[i] = add(str[i-2],str[i-1]);
//printf("%s\n",str[i]);
}
cin >> n;
while(n--)
{
int a;
cin >> a;
cout << str[a] << endl;
}
return 0;
}