Run ID:85290

提交时间:2024-07-16 21:19:34

def find_combinations(N, M, current_sum, current_combination, start, count): # 基本情况:如果当前组合的和与M相等,增加计数 if current_sum - M == sum(current_combination): count[0] += 1 return # 尝试添加下一个数字 for i in range(start, N): find_combinations(N, M, current_sum + (i + 1), current_combination + [i + 1], i + 1, count) def count_valid_splits(N, M): # 总和 total_sum = N * (N + 1) // 2 # 一半的和,因为两个子数组的和必须相等 half_sum = (total_sum + M) // 2 count = [0] # 使用列表以便在递归中修改 # 从0开始,尝试所有可能的组合 find_combinations(N, M, 0, [], 0, count) return count[0] # 读取输入 N, M = map(int, input().split()) # 输出结果 print(count_valid_splits(N, M))