কম্পিউটার টিউটোরিয়াল

পাইথনে ঠিক দুটি আইটেম দিয়ে ভালো মീলের সংখ্যা গণনা করার প্রোগ্রাম


মনে করুন deli নামক একটি অ্যারে আছে যেখানে deli[i] হলো i-তম খাদ্যের স্বাদ쁣তা। আমাদের এই লিস্ট থেকে কতগুলো ভিন্ন 'ভালো মীਲ' তৈরি করা যায় তা বের করতে হবে। উত্তর বড় হলে 10^9 + 7 দিয়ে মডুলো রিটার্ন করুন। এখানে 'ভালো মী্ল' বলতে দুটি ভিন্ন খাদ্য আইটেম যাঁর স্বাদ쁣তার যোগফল ২-এর ঘাত হবে সেটাকে বোঝায়। আমরা যেকোনো দুটি ভিন্ন খাদ্য সিলেক্ট করে ভালো মী্ল বানাতে পারি।

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

সমাধান পদ্ধতি

এই সমস্যাটি সমাধান করতে নিচের ধাপগুলো অনুসরণ করুন:

  • m := 10^9 + 7
  • count := প্রতিটি স্বাদ쁣তা মান ফ্রিকোয়েন্সি ধারণকারী একটি ম্যাপ
  • ans := 0
  • count-এ থাকা প্রতিটি i আইটেমের জন্য
    • n = 0 থেকে 21 পর্যন্ত
      • j := (2^n) - i
      • যদি j count-এ থাকে, তবে
        • যদি i == j হয়, তবে
          • ans := ans + count[i] * (count[i]-1)
        • অন্যথায়,
          • ans := ans + count[i] * count[j]
  • return (ans // 2) % 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<

ইনপুট

[1,7,3,6,5] 

আউটপুট

3

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

  2. পাইথনে বাইনারি স্ট্রিং-এ সব ১ থাকা সাবস্ট্রিংয়ের সংখ্যা বের করার প্রোগ্রাম

  3. পাইথন প্রোগ্রাম - n নোড দিয়ে BST-এর সংখ্যা বের করুন

  4. অ্যারে-এ ইনভারশন কাউন্ট করার পাইথন প্রোগ্রাম