假设,我们以 (x, y) 格式给出了几个不同的对。这里 x 表示数字的基数,y 表示数字本身。在列表中有表示相同的对。我们必须检查给定数字对中的匹配数。给定的对可以是多余的,也可以包含无效的基数组合。
因此,如果输入类似于 num_inputs = 2, input_arr = [(10, 15), (8, 17)],那么输出将为 1。
变量 num_inputs 指定输入的数量,数组 input_arr 列出数字对。在这里,如果我们看一下这两对;基数 10(十进制)中的 15 与基数 8(八进制)中的 17 相同。因此,有一个匹配项,我们返回输出值 1。
让我们看看以下实现以获得更好的理解 -
from collections import defaultdict def solve(num_inputs, input_arr): arr_len = len(input_arr) temp_dict = defaultdict(int) for i in range(num_inputs): num_base, num_val = str(input_arr[i][0]), str(input_arr[i][1]) temp_dict[int(num_val, int(num_base))] += 1 cnt = 0 for value in temp_dict.values(): cnt += value*(value - 1)//2 return cnt print(solve(2, [(10, 15), (8, 17)]))
2, [(10, 15), (8, 17)]输出结果
1