কম্পিউটার

পাইথনে ঠিক দুটি আইটেম সহ ভাল খাবার গণনা করার প্রোগ্রাম


ধরুন আমাদের একটি অ্যারে ডেলি আছে যেখানে ডেলি [i] হল ith খাবারের সুস্বাদু, আমাদের এই তালিকা থেকে বিভিন্ন ভাল খাবারের সংখ্যা খুঁজে বের করতে হবে। যদি উত্তরটি খুব বড় হয়, তাহলে ফলাফলের মডুলো 10^9 + 7 ফেরত দিন। এখানে একটি ভাল খাবার মানে এমন একটি খাবার যাতে ঠিক দুটি ভিন্ন খাদ্য আইটেম থাকে যার সমষ্টি সুস্বাদু যা দুটির শক্তি। একটি ভাল খাবার তৈরি করার জন্য আমরা যেকোনো দুটি ভিন্ন খাবার নির্বাচন করতে পারি।

সুতরাং, যদি ইনপুটটি deli =[1,7,3,6,5] এর মতো হয় তবে আউটপুট 3 হবে কারণ আমরা জোড়া (1,3), (1,7) এবং (3,5) তৈরি করতে পারি যার যোগফল হল 2 এর শক্তি।

এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -

  • m :=10^9 + 7
  • গণনা :=প্রতিটি সুস্বাদু মানগুলির ফ্রিকোয়েন্সি ধারণকারী একটি মানচিত্র
  • উত্তর :=0
  • প্রতিটি আইটেমের জন্য আমি গণনা করি, কর
    • 0 থেকে 21 রেঞ্জের মধ্যে n এর জন্য, করুন
      • j:=(2^n) - i
      • যদি j গণনায় থাকে, তাহলে
        • যদি i j এর মত হয়, তাহলে
          • উত্তর :=উত্তর + গণনা[i] *(গণনা[i]-1)
        • অন্যথায়,
          • উত্তর :=উত্তর + গণনা[i] * গণনা[j]
  • (ans/2) mod m এর ভাগফল ফেরত

উদাহরণ

আরো ভালোভাবে বোঝার জন্য আসুন নিচের বাস্তবায়ন দেখি -

from collections import Counter
def solve(deli):
   m = 10**9 + 7
   count = Counter(deli)
   ans = 0
   for i in count:
      for n in range(22):
         j = (1<<n)-i
         if j in count:
            if i == j:
               ans += count[i] * (count[i]-1)
            else:
               ans += count[i] * count[j]
   return (ans // 2) % m

deli = [1,7,3,6,5]
print(solve(deli))

ইনপুট

[1,7,3,6,5]

আউটপুট

3

  1. পাইথনে দুটি মানচিত্রে ওভারল্যাপিং দ্বীপের সংখ্যা গণনা করার প্রোগ্রাম

  2. পাইথনে বাইনারি স্ট্রিং-এ সমস্ত 1s সহ সাবস্ট্রিং গণনা করার প্রোগ্রাম

  3. পাইথনে n নোড সহ BST সংখ্যা গণনা করার প্রোগ্রাম

  4. পাইথন প্রোগ্রাম একটি অ্যারের মধ্যে বিপরীত গণনা