测试发布
#include <cstdio> #include <cstring> long long f[520][520]; long long a[520]; int main() { int n; memset(f,0,sizeof(f)); memset(a,0,sizeof(a)); f[0][0] = 1; for (int i = 1; i <= 500; i++) for (int j = 1; j <= i; j++) for (int k = 0; k < j; k++) { f[i][j] += f[i-j][k]; } for (int i = 1; i <= 500; i++) { for (int j = 1; j <= i; j++) { a[i] += f[i][j]; } } while (scanf("%d", &n) == 1) { if (n == 0) break; printf("%lld\n", a[n] - 1); } return 0; }