hdu 1398 Square Coins (母函数)

 

 

 

#include<cstdio>

#include<cstring>

#include<iostream>

#include<algorithm>

using namespace std;

int c1[400],c2[400];

void fun(int n)

{

    int i,j,k;

    for(i=0;i<=n;i++)

    {

        c1[i]=1;

        c2[i]=0;

    }

    for(i=2;i<=17;i++)

    {

        int add=i*i;

        for(j=0;j<=n;j++)

        {

            for(k=0;k+j<=n;k+=add)

            {

                c2[j+k]+=c1[j];

            }

        }

        for(j=0;j<=n;j++)

        {

            c1[j]=c2[j];

            c2[j]=0;

        }

    }

}

int main()

{

    int n;

    int i,j,k;

    fun(300);

    while(scanf("%d",&n),n)

    {

        printf("%d\n",c1[n]);

    }

    return 0;

}

 

你可能感兴趣的:(HDU)