| Run ID | 作者 | 问题 | 语言 | 测评结果 | Time | Memory | 代码长度 | 提交时间 |
|---|---|---|---|---|---|---|---|---|
| 136246 | 彭士宝 | 求和比较 | C++ | Wrong Answer | 1 MS | 272 KB | 928 | 2025-11-09 22:36:13 |
#include <iostream> #include <vector> using namespace std; int main() { int N, M; cin >> N >> M; // 计算从1到N的总和 int total = N * (N + 1) / 2; // 如果 total + M 不是偶数,直接输出0 if ((total + M) % 2 != 0) { cout << 0 << endl; return 0; } // 目标和 int sum1 = (total + M) / 2; // 动态规划数组 vector<bool> dp(sum1 + 1, false); dp[0] = true; // 遍历从1到N的每个数 for (int i = 1; i <= N; ++i) { // 从后往前更新dp数组 for (int j = sum1; j >= i; --j) { dp[j] = dp[j] || dp[j - i]; } } // 计数满足条件的拆分方案 int count = 0; for (int i = 1; i <= sum1; ++i) { if (dp[i] && dp[sum1 - i]) { count++; } } // 输出结果 cout << count << endl; return 0; }
------Input------
5 3
------Answer-----
3
------Your output-----
9