酷代码 AI
菜单

著名科学家卢斯为了检查学生对进位制的理解,他给出了如下的一张加法表,表中的字母代表数字。 例如: 其含义为: L+L=L,L+K=K,L+V=V,L+E=E K+L=K,K+K=V,K+V=E,K+E=KL ⋯ E+E=KV 根据这些规则可推导出:L=0,K=1,V=2,E=3。 同时可以确定该表表示的是 4 进制加法。 输入 第一行一个整数 n(3≤n≤9)表示行数。 以下 n 行,每行包括 n 个字符串,每个字符串间用空格隔开。 若记 s i,j 表示第 i 行第 j 个字符串,数据保证 s 1,1 =+,s i,1 =s 1,i ,∣s i,1 ∣=1,s i,1  =s j,1 (i  =j)。 保证至多有一组解。 输出 第一行输出各个字母表示什么数,格式如:L=0 K=1 ⋯ 按给出的字母顺序排序。不同字母必须代表不同数字。 第二行输出加法运算是几进制的。 若不可能组成加法表,则应输出 ERROR!。 样例输入 复制 5 + L K V E L L K V E K K V E KL V V E KL KK

```python n = int(input()) table = [input().split() for _ in range(n)] letters = table[0][1:] letter_count = len(letters) # 生成所有可能的数字排列 from itertools import permutations all_permutations = permutations(range(letter_count)) def letter_to_num(letter, mapping): return mapping[letters.index(letter)] def num_to_letter(num, mapping): return letters[list(mapping).index(num)] def convert_to_decimal(num_str, mapping, base): result = 0 power = 0 for char in reversed(num_str): result += letter_to_num(char, mapping) * (base power) power += 1 return result def convert_from_decimal(num, mapping, base): if num == 0: return num_to_letter(0, mapping) result = "" while num > 0: remainder = num % base result = num_to_letter(remainder, mapping) + result num //= base return result for mapping in all_permutations: base = letter_count valid = True for i in range(1, n): for j in range(1, n): left = letter_to_num(table[i][0], mapping) right = letter_to_num(table[0][j], mapping) sum_decimal = left + right expected = convert_from_decimal(sum_decimal, mapping, base) if expected != table[i][j]: valid = False break if not valid: break if valid: output1 = " ".join([f"{letter}={letter_to_num(letter, mapping)}" for letter in letters]) print(output1) print(base) break else: print("ERROR!") ``` [2025-12-13 11:11:40 | AI问答 | 431点数解答]

服务商
相关提问
发财导航,免费问AI
实用工具查看更多