hdu 1715 大菲波数
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<stdio.h> #include<string.h> int m=10000; struct bignum{ int s[100]; int l; }f[1001]; bignum operator+(bignum a,bignum b) { int i,d=0; if(b.l<a.l) b.l=a.l; for(i=1;i<=b.l;i++) { b.s[i]+=d+a.s[i]; d=b.s[i]/m; b.s[i]%=m; } if(d) b.s[b.l+1]=d,b.l++; return b; } void print(bignum a) { printf("%d",a.s[a.l]); for(int i=a.l-1;i>0;i--) printf("%04d",a.s[i]); printf("\n"); } int main() { int n,b; f[1].s[1]=1;f[2].s[1]=1; f[1].l=1;f[2].l=1; for(int i=3;i<=1000;i++) { f[i]=f[i-1]+f[i-2]; } scanf("%d",&n); while(n--){ scanf("%d",&b); print(f[b]); } return 0; }