Run ID | 作者 | 问题 | 语言 | 测评结果 | Time | Memory | 代码长度 | 提交时间 |
---|---|---|---|---|---|---|---|---|
116217 | 彭士宝 | 求和比较 | Python3 | Wrong Answer | 33 MS | 3864 KB | 1110 | 2025-04-06 17:05:42 |
def count_split_schemes(N, M): total_sum = N * (N + 1) // 2 # 计算1到N的总和 if (total_sum + M) % 2 != 0 or (total_sum - M) % 2 != 0: return 0 sum1 = (total_sum + M) // 2 sum2 = (total_sum - M) // 2 # 动态规划检查sum1 dp = [[False] * (sum1 + 1) for _ in range(N + 1)] dp[0][0] = True for i in range(1, N + 1): for j in range(sum1 + 1): dp[i][j] = dp[i - 1][j] if j >= i: dp[i][j] = dp[i][j] or dp[i - 1][j - i] count = 0 if dp[N][sum1]: count += 1 # 如果sum1 != sum2,检查sum2 if sum1 != sum2: dp = [[False] * (sum2 + 1) for _ in range(N + 1)] dp[0][0] = True for i in range(1, N + 1): for j in range(sum2 + 1): dp[i][j] = dp[i - 1][j] if j >= i: dp[i][j] = dp[i][j] or dp[i - 1][j - i] if dp[N][sum2]: count += 1 return count # 读取输入 N, M = map(int, input().split()) # 输出结果 print(count_split_schemes(N, M))
------Input------
5 3
------Answer-----
3
------Your output-----
2