2 条题解

  • 0
    @ 2025-10-8 16:55:04
    #include <bits/stdc++.h>
    using namespace std;
    typedef long long LL;
    const int N = 50, M = 2600;
    LL f[N][M];
    
    int main() {
        int n;
        scanf("%d", &n);
        int sum = n * (n + 1) / 2;
        memset(f, 0, sizeof(f));
        f[0][0] = 1;
        for (int i = 1; i <= n; i++) {
            for (int j = 0; j <= sum; j++) {
                f[i][j] = f[i - 1][j];
                if (j >= i) {
                    f[i][j] += f[i - 1][j - i];
                }
            }
        }
        LL ans = f[n][sum / 2] / 2;
        printf("%lld\n", (sum & 1) ? 0 : ans);
        return 0;
    }
    
    • 0
      @ 2025-10-8 16:54:54
      #include<bits/stdc++.h>
      using namespace std;
      typedef long long LL;
      const int N=50, M=2600;
      LL f[N][M];
      int main(){
      	int n; scanf("%d", &n);
      	int sum=n*(n+1)/2;
      	memset(f, 0, sizeof(f)); f[0][0]=1;
      	for(int i=1; i<=n; i++){
      		for(int j=0; j<=sum; j++){
      			f[i][j]=f[i-1][j];
      			if(j>=i) f[i][j]+=f[i-1][j-i];
      		}
      	}
      	LL ans=f[n][sum/2]/2;
      	printf("%lld\n", (sum&1)? 0: ans);
      	return 0;
      } 
      • 1

      信息

      ID
      1008
      时间
      1000ms
      内存
      128MiB
      难度
      5
      标签
      递交数
      21
      已通过
      12
      上传者