大菲波数
Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 14121 Accepted Submission(s): 4806
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//解题思路:这道题被OT好多次,最后看别人的思路才明白,我猜的是在OJ运行的时候是从输入到输出的时间,而且最后输入输出很聪明的避过这个问题,计算这种问题用二维数组是很好的。参考代码如下:#include<stdio.h> #include<string.h> #define N 1004 int a[1001][1005]; int main(){int i,j; memset(a,0,sizeof(a)); a[1][0]=1; a[2][0]=1; for(i=3;i<=1000;i++) { for(j=0;j<=N;j++) { a[i][j]+=a[i-1][j]+a[i-2][j]; if(a[i][j]>=10) { a[i][j]%=10; a[i][j+1]++; } } } int s,n; scanf("%d",&s); while(s--) { scanf("%d",&n); if(n==1||n==2) {printf("1\n"); continue; } if(n>=3) { for(i=N;i>=0&&a[n][i]==0;i--); for(;i>=0;i--) printf("%d",a[n][i]); printf("\n"); } } return 0; }
</pre></div>