HDU 1398
只需要把增量改为i*i即可
与上篇 1028 一样
#include <iostream>
#include <cstdio>
#include <algorithm>
#include <cstring>
#define N 350
using namespace std;
int c1[N],c2[N];
int main(){
for(int i=0;i<=300;i++){
c1[i]=1;c2[i]=0;
}
for(int i=2;i<=17;i++){
for(int j=0;j<=300;j++){
for(int k=0;k+j<=300;k+=(i*i))
c2[k+j]+=c1[j];
}
for(int j=0;j<=300;j++)
c1[j]=c2[j],c2[j]=0;
}
int n;
while(scanf("%d",&n),n){
printf("%d\n",c1[n]);
}
return 0;
}

浙公网安备 33010602011771号