একটি ভাল খাবারে ঠিক দুটি ভিন্ন খাদ্য আইটেম থাকে যার সুস্বাদু পরিমাণ দুটি শক্তির সমান। আপনি একটি ভাল খাবার তৈরি করতে যেকোনো দুটি ভিন্ন খাবার বেছে নিতে পারেন।
ধরা যাক, আমরা পূর্ণসংখ্যার একটি অ্যারে দিয়েছি যেখানে arr[i] হল খাবারের ith আইটেমের সুস্বাদু, এই তালিকা থেকে আপনি কতগুলি ভাল খাবার তৈরি করতে পারেন তা ফেরত দিন৷
উদাহরণস্বরূপ,
ইনপুট-1 −
arr[ ] = {1, 3, 5, 7, 9}
আউটপুট −
4
ব্যাখ্যা − ভাল খাবার হল (1,3), (1,7), (3,5) এবং, (7,9)। তাদের নিজ নিজ যোগফল হল 4, 8, 8, এবং 16, যার সবকটিই 2 এর ক্ষমতা।
ইনপুট-2 −
arr[ ]= {1,1,1,3,3,3,7}
আউটপুট −
15
ব্যাখ্যা − ভাল খাবার হল (1,1) 3 উপায়ে, (1,3) 9 উপায়ে এবং (1,7) 3 উপায়ে৷
এই সমস্যা সমাধানের জন্য ব্যবহৃত পদ্ধতি
-
ধনাত্মক পূর্ণসংখ্যার একটি অ্যারে হিসাবে ইনপুট নিন৷
-
একটি ফাংশন গণনা জোড়া সমস্ত অ্যারের উপাদানকে পূর্ণসংখ্যার তালিকা হিসাবে গ্রহণ করে।
-
ক্রমবর্ধমান ক্রমে ইনপুট অ্যারে উপাদান সাজান।
-
অ্যারের প্রতিটি উপাদানের জন্য, সর্বাধিক যোগফল খুঁজে বের করুন যাতে প্রতিটি উপাদান '2' এর শক্তিতে থাকে।
উদাহরণ
class Solution: def countpairs(self, arr: List[int]) -> int: """ elem1 + elem2 == 1 << i elem1 = 2 << i - elem2 """ result = 0 seen = defaultdict(int) arr.sort() for d in arr: n = 1 while n <= d + d: ans = (ans + seen[n-d]) % (10 ** 9 + 7) n = n << 1 seen[d] += 1 return ans sol1= Solution() print(sol1.countpairs([1,1,1,3,3,3,7]))
আউটপুট
4