hdu1715

/*
ID:billat11
LANG:C
TASK:namenum
*/
#include<iostream>
#include<cstdio>
#include<cstdarg>
#include<stdlib.h>
#include<cstring>
#include<cmath>
using namespace std;
const int Len=300;//int 6
int c[Len+1];
int all[1006][Len+1];
void add(int a[],int b[])
 {
    memset(c,0,sizeof(c));
    
     for(int i=0;i<Len;i++)//0 低位
     {
         c[i]=a[i]+b[i];
     }
     for(int i=0;i<Len;i++)
     {
         c[i+1]+=c[i]/10;
         c[i]=c[i]%10;
     }
     return ;
 }
void init()
{
    for(int i=0;i<=1005;i++)
    for(int j=0;j<=Len;j++)
        all[i][j]=0;
    all[0][0]=1;
    all[1][0]=1;
    
    for(int i=2;i<1006;i++)
    {
        add(all[i-1],all[i-2]);
        for(int j=0;j<=Len;j++)
            all[i][j]=c[j];
    }
}
int cmp(int a[],int b[])
{
    for(int i=Len;i>=0;i--)
    {
        if(a[i]!=b[i]) return (a[i]-b[i])/abs(a[i]-b[i]);
    }
    return 0;
}
void print(int a[])
{
    int j;
    for(j=Len;j>0&&!a[j];j--);
    printf("%d",a[j]);
    j--;
    for(;j>=0;j--)
        printf("%d",a[j]);
    cout<<endl;
}
int main()
{
    int n,k;
    init();
    while(scanf("%d",&n)==1)
    {
     for(int i=0;i<n;i++)
     {
         scanf("%d",&k);
         print(all[k-1]);
     }
          
    }
  //system("pause");
  return 0;
}

  

posted @ 2012-06-06 21:25  wuzhibin  阅读(128)  评论(0)    收藏  举报