hdu 1715 大菲波数

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>
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("
");
}
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;
}
原文地址:https://www.cnblogs.com/duan-to-success/p/3651716.html