Python程序:查找包含(基数,数字)对的数组中匹配数的数量

Python程序:查找包含(基数,数字)对的数组中匹配数的数量

假设我们给出多个不同格式为(x,y)的对。这里的x表示数字的基数,y表示数字本身。在列表中有意义相同的对。我们必须检查给定数字对中的匹配数。给定的对可能是冗余的,也可能包含无效的基数-数字组合。

因此,如果输入为num_inputs = 2,input_arr = [(10,15),(8,17)],则输出将是1。

变量num_inputs指定输入数,数组input_arr列出数字对。在这里,如果我们看两个对;十进制的15与八进制的17是相同的。因此,有一个匹配并返回输出值1。

要解决这个问题,我们将遵循以下步骤:

  • arr_len:= input_arr的大小
  • temp_dict:=包含整数值的新映射
  • 对于i在范围0到num_inputs的范围内,执行
    • num_base:=输入input_arr中第1对的第1个数字的字符串表示形式
    • num_val:=输入input_arr中第i个对的第二个数字的字符串表示形式
    • temp_dict [整数表示(num_val,整数表示(num_base))]:= temp_dict [整数表示(num_val,整数表示(num_base))] + 1
  • cnt:= 0
  • 对于temp_dict所有值的列表中的每个值,执行
    • cnt:= cnt + value * ((value-1) / 2)的地板值
  • 返回cnt

更多Python相关文章,请阅读:Python 教程

示例

让我们看以下实现以更好地理解

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

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程