ধরুন, আমাদের ফরম্যাটে (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
-এ জোড়া i-এর প্রথম সংখ্যার স্ট্রিং উপস্থাপনা -
num_val :=input_arr
-এ জোড়া i-এর দ্বিতীয় সংখ্যার স্ট্রিং উপস্থাপনা -
temp_dict[(num_val,(num_base)) এর পূর্ণসংখ্যা প্রতিনিধিত্ব] :=temp_dict[(num_val,(num_base)) এর পূর্ণসংখ্যা প্রতিনিধিত্ব] ] + 1
-
- cnt :=0
- temp_dict-এর সমস্ত মানের তালিকার প্রতিটি মানের জন্য, করুন
- cnt :=cnt + মান* ফ্লোর মান ((মান - 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