HDOJ_1297_Children'sQueue

注意:这里需要处理数,因为到后面数太大,long long int 也不能胜任

AC代码:

#include <iostream>
#include <cstdio>
#include <cstring>
#define Max 1005
using namespace std;
long long a[Max][Max];

void hanshu()
{
    int i,j;
    memset(a,0,sizeof(a));
    a[1][0]=1;a[2][0]=2;a[3][0]=4;a[4][0]=7;
    for(i=5;i<=1000;i++)
    {
        for(j=0;j<=1000;j++)
            a[i][j]=a[i-1][j]+a[i-2][j]+a[i-4][j];
        for(j=0;j<=1000;j++)
        {
            if(a[i][j]>=10)
            {
                a[i][j+1]+=a[i][j]/10;
                a[i][j]=a[i][j]%10;
            }
        }
    }
}

int main(void)
{
    hanshu();
    
    freopen("in.txt","r",stdin);
    int n;
    while(scanf("%d",&n)!=EOF)
    {
        int i=1000;
        while(i--)
            if(a[n][i]!=0)
                break;
        for(;i>=0;i--)
            printf("%d",a[n][i]);
        printf("
");
    }
    

    fclose(stdin);
    system("pause");
    return 0;
}
原文地址:https://www.cnblogs.com/phaLQ/p/9953580.html