Run ID 作者 问题 语言 测评结果 时间 内存 代码长度 提交时间
87020 sh25_shenpy ADV-124 凶手 Python3 通过 26 MS 3700 KB 2155 2026-04-10 15:09:31

Tests(1/1):


def solve(): suspects = ['A', 'B', 'C', 'D', 'E', 'F'] possible_killers = [] # 遍历每一个嫌疑人,假设他是凶手 for killer in suspects: # 记录当前假设下,每个人说的话是真还是假 # 索引 0-5 对应 A-F truth_values = [False] * 6 # 获取当前凶手的索引 (A=0, B=1, ...) k_idx = suspects.index(killer) # 判断 A 的话: "我不是罪犯" # 如果 A 不是凶手,A 说真话 if k_idx != 0: truth_values[0] = True # 判断 B 的话: "A、C中有一个是罪犯" # 即 (A是凶手) XOR (C是凶手) if (k_idx == 0) ^ (k_idx == 2): truth_values[1] = True # 判断 C 的话: "A和B说了假话" # 即 A说假话 AND B说假话 if (not truth_values[0]) and (not truth_values[1]): truth_values[2] = True # 判断 D 的话: "C和F说了假话" # 即 C说假话 AND F说假话 # 注意:这里需要用到 F 的真假,所以 F 的判断逻辑要先在心里过一遍,或者直接写出来 # F 的话: "我是罪犯" -> 如果 killer 是 F,F 说真话 f_is_truth = (k_idx == 5) if (not truth_values[2]) and (not f_is_truth): truth_values[3] = True # 判断 E 的话: "其他五个人中,只有A和D说了真话" # 即 A真 AND D真 AND B假 AND C假 AND F假 # 注意:这里不包含 E 自己 if (truth_values[0] and truth_values[3] and (not truth_values[1]) and (not truth_values[2]) and (not f_is_truth)): truth_values[4] = True # 判断 F 的话: "我是罪犯" truth_values[5] = f_is_truth # 统计真话的数量 true_count = sum(truth_values) # 如果真话数量正好是 3 (一半),则当前假设的 killer 是可能的凶手 if true_count == 3: possible_killers.append(killer) # 按字母顺序输出结果 for p in sorted(possible_killers): print(p) solve()


测评信息: