HDU 1398 Square Coins

题目地址:点击打开链接

思路:母函数模板题

AC代码:

#include <iostream>

using namespace std;

int main()
{
    int i,j,k,n;
    int c1[310],c2[310];
    while(cin>>n)
    {
        if(n == 0)
            break;
        for(i=0; i<=n; i++)
        {
            c1[i] = 1;
            c2[i] =0;
        }
        for(i=2; i<=17; i++)//要是超时可以预处理一下,不过不可能,懒得处理了
        {
            for(j=0; j<=n; j++)
            {
                for(k=0; k+j<=n; k += i*i)
                {
                    c2[k+j] += c1[j];
                }
            }
            for(j=0; j<=n; j++)
            {
                c1[j] = c2[j];
                c2[j] = 0;
            }
        }
        cout<<c1[n]<<endl;
    }
    return 0;
}

你可能感兴趣的:(HDU 1398 Square Coins)