HDU 1398

来源:互联网 发布:传智播客软件测试视频 编辑:程序博客网 时间:2024/05/18 02:49
#include<stdio.h>#include<string.h>int main(){    int i,j,k,n;    int a[20];    int num1[350],num2[350];    memset(num1,0,sizeof(num1));    memset(num2,0,sizeof(num2));    for(i=1;i<=17;i++)        a[i]=i*i;    for(i=0;i<=300;i++)    {        num1[i]=1;        num2[i]=0;    }    for(i=2;i<=17;i++)    {        for(j=0;j<=300;j++)            for(k=0;k+j<=300;k+=a[i])                num2[k+j]+=num1[j];        for(j=0;j<=300;j++)        {            num1[j]=num2[j];            num2[j]=0;        }    }    while(scanf("%d",&n)&&n)        printf("%d\n",num1[n]);    return 0;}

 
原创粉丝点击