কईটি (x, y) পেয়ার দেওয়া আছে। x = বেস, y = সে বেসে নম্বর। লিস্টে কিছু পেয়ার একই মান নির্দেশ করতে পারে। কতগুলো মিলমান পেয়ার আছে সেটা বের করতে হবে। অবৈধ বেস-নম্বর কম্বিনেশনও থাকতে পারে।
ইনপুট: num_inputs = 2, input_arr = [(10, 15), (8, 17)] → আউটপুট: 1। ১৫ (বেস ১০) = ১৭ (বেস ৮)। একটা মিল পাওয়া গেল।
সমাধানের ধাপসমূহ
temp_dict := ডিফল্টডিক্ট(int)
প্রতিটি পেয়ারের জন্য: মান = int(str(num_val), int(num_base)); temp_dict[মান]++
প্রতিটি ফ্রিকোয়েন্সি value-এর জন্য: count += value * (value - 1) // 2 (nC2)
count রিটার্ন করুন
উদাহরণ (Python)
from collections import defaultdict
def solve(num_inputs, 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