Hat's Fibonacci

http://acm.hdu.edu.cn/showproblem.php?pid=1250

大数斐波那契

%08d是什么东西,为什么我用flag交不上,唉,不刷大数了,没劲。暑假再讲。

就是交不上

#include <iostream>
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
using namespace std;
int ta[10001][511];
int main()
{
    int n,k;
     memset(ta,0,sizeof(ta));
     ta[0][0]=1;
     ta[1][0]=1;
     ta[2][0]=1;
     ta[3][0]=1;
     ta[4][0]=1;
     for(int i=5;i<10001;i++)
     {
         for(int j=0;j<510;j++)
         {
              k=ta[i][j]+ta[i-1][j]+ta[i-2][j]+ta[i-3][j]+ta[i-4][j];
              if(k>=100000)
              {
                  ta[i][j+1]=k/100000;
                  ta[i][j]=k%100000;
              }
              else ta[i][j]=k;
         }


     }
    while(scanf("%d",&n)!=EOF)
    {
        int i,j;
        for(i=510;i>=0;i--)
        if(ta[n][i]!=0) break;
        printf("%d",ta[n][i]);
        for(j=i-1;j>=0;j--)
        printf("%05d",ta[n][j]);//5个字符宽度的整数,不够5个的左边用0补齐
        printf("
");
    }
    return 0;
}

 http://acm.sdut.edu.cn/sdutoj/problem.php?action=showproblem&problemid=2876

#include <iostream>
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
using namespace std;
int ta[1002][130];
int main()
{
    int n,k;
     memset(ta,0,sizeof(ta));
     ta[0][0]=1;
     ta[1][0]=1;
     ta[2][0]=2;
     for(int i=3;i<1001;i++)
     {
         for(int j=0;j<130;j++)
         {
              k=ta[i][j]+ta[i-1][j]+ta[i-2][j];
              if(k>=100000)
              {
                  ta[i][j+1]=k/100000;
                  ta[i][j]=k%100000;
              }
              else ta[i][j]=k;
         }


     }
    int T;
    scanf("%d",&T);
    while(T--)
    {
        scanf("%d",&n);
        int i,j;
        for(i=129;i>=0;i--)
        if(ta[n][i]!=0) break;
        printf("%d",ta[n][i]);
        for(j=i-1;j>=0;j--)
        printf("%05d",ta[n][j]);//5个字符宽度的整数,不够5个的左边用0补齐
        printf("
");
    }
    return 0;
}
原文地址:https://www.cnblogs.com/zhangmingcheng/p/3814891.html