मान लीजिए, हमें (x, y) फॉर्मेट में कई अलग-अलग जोड़े दिए गए हैं। यहां x एक संख्या का आधार दर्शाता है और y स्वयं संख्या को दर्शाता है। सूची में ऐसे जोड़े हैं जिनका अर्थ समान है। हमें दी गई संख्या जोड़े में मैचों की संख्या जांचनी है। दिए गए जोड़े रिडंडेंट हो सकते हैं, और अमान्य आधार-संख्या संयोजन भी हो सकते हैं।
इसलिए, यदि इनपुट है: num_inputs = 2, input_arr = [(10, 15), (8, 17)], तो आउटपुट 1 होगा।
वेरिएबल num_inputs इनपुट की संख्या निर्दिष्ट करता है, और सरणी input_arr संख्या जोड़े सूचीबद्ध करती है। यहां यदि हम दोनों जोड़ों को देखें; बेस 10 (दशमलव) में 15, बेस 8 (ऑक्टल) में 17 के समान है। तो, एक मैच है और हम आउटपुट मान 1 वापस करते हैं।
हल करने के चरण
- arr_len := input_arr का आकार
- temp_dict := पूर्णांक मानों वाला एक नया मैप
- i को 0 से num_inputs तक के लिए:
- num_base := input_arr में जोड़े i की पहली संख्या का स्ट्रिंग प्रतिनिधित्व
- num_val := input_arr में जोड़े i की दूसरी संख्या का स्ट्रिंग प्रतिनिधित्व
- temp_dict[int(num_val, int(num_base))] := temp_dict[int(num_val, int(num_base))] + 1
- cnt := 0
- temp_dict के सभी मानों की सूची में प्रत्येक value के लिए: cnt := cnt + value * floor((value - 1) / 2)
- cnt वापस करें
उदाहरण
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