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

707 ワード

  :      N,          ,  M(M>=1)      N.
        k*i+j;
#include<stdio.h>
#include<string.h>
#define max 130
int c1[max],c2[max];
void init()
{
    memset(c1,0,sizeof(c1));
    memset(c2,0,sizeof(c2));
    c1[0]=1;
    for(int i=1; i<=max; i++)
    {
        for(int j=0; j<=max; j++)
            for(int k=0; k*i+j<=max; k++)
            {
                c2[k*i+j]+=c1[j];
            }
        for(int i=0; i<=max; i++)
        {
            c1[i]=c2[i];
            c2[i]=0;
        }
    }
}
int main()
{
    int t;
    init();
    while(scanf("%d",&t)!=EOF)
    {
        printf("%d
",c1[t]); } return 0; }