大菲波数
Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 22722 Accepted Submission(s): 8163
Problem Description
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
Source
#include<stdio.h> #include<string> #include<iostream> using namespace std; #define N 1010 string a[N]; string add(string s1,string s2)//模板 { int len1=s1.size(); int len2=s2.size(); if(len1<len2) { swap(s1,s2); swap(len1,len2); } int c=0; for(int i=len1-1,j=len2-1;i>=0;i--,j--) { c+=s1[i]-'0'; if(j>=0) c+=s2[j]-'0'; s1[i]=c%10+'0'; c/=10; } if(c) s1='1'+s1; return s1; } int main() { ios::sync_with_stdio(false);//加快cin,cout的速度 cin.tie(0); int n; a[1]='1'; a[2]='1'; for(int i=3;i<1005;i++) a[i]=add(a[i-1],a[i-2]); int t; cin>>t; while(t--) { cin>>n; cout<<a[n]<<endl; } return 0; }