Python 程序找出包含 (base, number) 对的数组中的匹配数

假设,我们以 (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