题目:https://www.luogu.org/problemnew/show/P1466
水题,注意开long long;
代码如下:
#include<iostream> #include<cstdio> #include<cstring> using namespace std; long long n,f[45][1500],sum[45]; int main() { scanf("%d",&n); for(int i=1;i<=n;i++)sum[i]=(1+i)*i/2; if(sum[n]%2) { printf("0");return 0; } f[0][0]=1; for(int i=1;i<=n;i++) { for(int j=0;j<=sum[i];j++) { f[i][j]=f[i-1][j]; if(j>=i)f[i][j]+=f[i-1][j-i]; } } printf("%d",f[n][sum[n]/2]/2); return 0; }