Run ID 作者 问题 语言 测评结果 Time Memory 代码长度 提交时间
116215 彭士宝 求和比较 C++ Wrong Answer 1 MS 268 KB 1230 2025-04-06 16:55:30

Tests(1/4):


Code:

#include <iostream> #include <vector> using namespace std; int main() { int N, M; cin >> N >> M; int sum = N * (N + 1) / 2; int sum1 = (sum + M) / 2; int sum2 = (sum - M) / 2; if ((sum + M) % 2 != 0 || (sum - M) % 2 != 0) { cout << 0 << endl; return 0; } vector<vector<bool>> dp(N + 1, vector<bool>(sum1 + 1, false)); dp[0][0] = true; for (int i = 1; i <= N; ++i) { for (int j = 0; j <= sum1; ++j) { dp[i][j] = dp[i - 1][j]; if (j >= i) { dp[i][j] = dp[i][j] || dp[i - 1][j - i]; } } } int count = 0; if (dp[N][sum1]) { count++; } if (sum1 != sum2) { dp = vector<vector<bool>>(N + 1, vector<bool>(sum2 + 1, false)); dp[0][0] = true; for (int i = 1; i <= N; ++i) { for (int j = 0; j <= sum2; ++j) { dp[i][j] = dp[i - 1][j]; if (j >= i) { dp[i][j] = dp[i][j] || dp[i - 1][j - i]; } } } if (dp[N][sum2]) { count++; } } cout << count << endl; return 0; }


Run Info:

------Input------
5 3
------Answer-----
3
------Your output-----
2