Run ID:116217
提交时间: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))