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

পাইথনে 'নাইস' জোড়া वाले সাবসিকোয়েন্সের ম্যাক্সিমাম আকার বের করা

একটি সিকোয়েন্স nums দেওয়া আছে। এর সাবসিকোয়েন্সের ম্যাক্সিমাম আকার বের করতে হবে যেখানে প্রতিটি জোড়া (p, q) 'নাইস' জোড়া। নাইস জোড়ার শর্ত:

  1. p এবং q-র স্বতন্ত্র প্রাইম ডিভাইজরের সংখ্যার প্যারিটি (সম/বিষম) একই।
  2. অথবা p এবং q-র সব পজিটিভ ডিভাইজরের যোগফলের প্যারিটি একই।

উদাহরণ

ইনপুট: nums = [2, 3, 6, 8]

আউটপুট: 3

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

  1. n := len(nums)
  2. cnt, total, result — তিনটি খালি লিস্ট।
  3. প্রতিটি i in nums এর জন্য:
    • প্রাইম সংখ্যাগুলো খুঁজে বের করুন।
    • i-র স্বতন্ত্র প্রাইম ডিভাইজরের সংখ্যা গণনা করুন → cnt-এ 'even'/'odd' যোগ করুন।
    • i-র সব ডিভাইজরের যোগফল গণনা করুন → total-এ 'even'/'odd' যোগ করুন।
  4. সব জোড়া (i, j) চেক করুন: যদি cnt[i] == cnt[j] বা total[i] == total[j] হয়, তবে result-এ যোগ করুন।
  5. result-কে সেটে কনভার্ট করে আকার রিটার্ন করুন।

পাইথন ইমপ্লিমেন্টেশন

def solve(nums):
    n = len(nums)
    cnt = []
    total = []
    result = []
    for i in nums:
        count = 0
        tot = 0
        prime = []
        for j in nums:
            if all(j % k for k in range(2, j)):
                prime.append(j)
        for j in prime:
            if i % j == 0:
                count += 1
        cnt.append('odd' if count % 2 else 'even')
        for j in range(1, i + 1):
            if i % j == 0:
                tot += j
        total.append('odd' if tot % 2 else 'even')
    for i in range(n - 1):
        for j in range(i + 1, n):
            if cnt[i] == cnt[j] or total[i] == total[j]:
                result.append(nums[i])
                if j == n - 1:
                    result.append(nums[j])
    result = list(set(result))
    return len(result)

# টেস্ট
nums = [2, 3, 6, 8]
print(solve(nums))  # আউটপুট: 3

ইনপুট

15, 3, 8

আউটপুট

3
  1. পাইথনে nums[i] + nums[j] + (i - j) এক্সপ্রেশন ম্যাক্সিমাইজ করা

  2. পাইথনে একটি অ্যারে থেকে সর্বোচ্চ nCr মান দিয়ে জোড়া বের করুন

  3. পাইথন - বিটোনিক সিকোয়েন্সে বিটোনিক পয়েন্ট খুঁজে বের করা (বাইনারি সার্চ)

  4. পাইথনে অ্যারে গ্রুপ অনুযায়ী উল্টে ফেলার প্রোগ্রাম