大菲波数
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
代码如下:
#include<stdio.h> #include<string.h> #define N 1002 char a[N][N]; int main() {memset(a,'0',sizeof(a)); int i,j; a[1][0]='1'; a[2][0]='1'; a[0][0]='0'; int k=1,s,c; for(i=3;i<N;i++) {k++;c=0; for(j=0;j<=k;j++) {s=a[i-1][j]-'0'+a[i-2][j]-'0'+c; c=s/10; a[i][j]=s%10+'0'; } } int n,x; scanf("%d",&n); while(n--) {scanf("%d",&x); k=N; while(k--) if(a[x][k]!='0') break; for(i=k;i>=0;i--) printf("%c",a[x][i]); printf("\n"); } return 0; }