Run ID | 作者 | 问题 | 语言 | 测评结果 | Time | Memory | 代码长度 | 提交时间 |
---|---|---|---|---|---|---|---|---|
84986 | 胡海峰老师 | 求和比较 | Python3 | Accepted | 42 MS | 3796 KB | 768 | 2024-07-16 15:34:31 |
def find_combinations(n, m): count = 0 # 总共有2^n种组合方式 for i in range(2** n): # 从000...1到111...1 subset1 = [] subset2 = [] sum1, sum2 = 0, 0 # 根据位掩码i生成两个子数组 for j in range(n): if i & (1 << j): subset1.append(j + 1) sum1 += j + 1 else: subset2.append(j + 1) sum2 += j + 1 # 检查两个子数组的和的差值是否等于M if abs(sum1 - sum2) == m: count += 1 return count//2 # 读取输入的两个正整数N和M n, m = map(int, input().split()) # 输出符合条件的拆分方案数 print(find_combinations(n, m))