diff --git a/HDOJ/1398_cnblogs.cpp b/HDOJ/1398_cnblogs.cpp new file mode 100644 index 0000000..3c489d4 --- /dev/null +++ b/HDOJ/1398_cnblogs.cpp @@ -0,0 +1,32 @@ +#include +#include +#include +#include +using namespace std; + +const int M = 300 + 10; + +int dp[M]; + +int main() +{ + int n; + while (~scanf("%d", &n), n) + { + + memset(dp, 0, sizeof(dp)); + dp[0] = 1; + + int max = (int)sqrt(n * 1.0); + for (int i = 1; i <= max; i++) + { + for (int j = i * i; j <= n; j++) + { + dp[j] += dp[j - i * i]; + } + } + + printf("%d\n", dp[n]); + } + return 0; +}