मान लीजिए, हमें प्रारूप (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 :=पूर्णांक मानों वाला एक नया नक्शा
-
मेरे लिए 0 से num_inputs की सीमा में, करें
-
num_base :=input_arr में युग्म की पहली संख्या का स्ट्रिंग प्रतिनिधित्व
-
num_val :=input_arr में युग्म i की दूसरी संख्या का स्ट्रिंग प्रतिनिधित्व
-
temp_dict [(num_val, पूर्णांक प्रतिनिधित्व (num_base)) का पूर्णांक प्रतिनिधित्व:=temp_dict [(num_val, पूर्णांक प्रतिनिधित्व (num_base)) का पूर्णांक प्रतिनिधित्व] + 1
-
- सीएनटी:=0
- temp_dict के सभी मानों की सूची में प्रत्येक मान के लिए, करें
- cnt :=cnt + value* ((मान -1) / 2) का न्यूनतम मूल्य
- वापसी सीएनटी
उदाहरण
आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें -
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