কম্পিউটার

একটি অ্যারেকে জোড়ায় ভাগ করা যায় কিনা পরীক্ষা করুন যার যোগফল পাইথনে k দ্বারা বিভাজ্য


ধরুন আমাদের একটি সংখ্যার বিন্যাস আছে এবং আরেকটি সংখ্যা k আছে, আমাদের পরীক্ষা করতে হবে যে প্রদত্ত অ্যারেকে জোড়ায় ভাগ করা যায় যাতে প্রতিটি জোড়ার যোগফল k দ্বারা বিভাজ্য হয় বা না হয়।

সুতরাং, যদি ইনপুট হয় arr =[5, 15, 6, 9] k =7, তাহলে আউটপুটটি True হবে কারণ আমরা (5, 9) এবং (15, 6) এর মতো জোড়া নিতে পারি।

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

  • n :=অ্যারের আকার
  • যদি n বিজোড় হয়, তাহলে
    • মিথ্যে ফেরত দিন
  • ঘটনা :=একটি খালি অভিধান, যদি কিছু কী না থাকে তাহলে সেই অনুপস্থিত কীটির মান হিসাবে 0 ফেরত দেয়
  • আমি 0 থেকে n রেঞ্জের জন্য, কর
    • ঘটনাগুলি [((অ্যারে[i] mod k) + k) mod k] 1 দ্বারা বৃদ্ধি করুন
  • আমি 0 থেকে n রেঞ্জের জন্য, কর
    • অবশিষ্ট :=((অ্যারে[i] mod k) + k) mod k
    • যদি 2 * অবশিষ্টাংশ k এর সমান হয়, তাহলে
      • যদি ঘটনা [বাকি] বিজোড় হয়, তাহলে
        • মিথ্যে ফেরত দিন
    • অন্যথায় যখন অবশিষ্টাংশ 0 এর সমান হয়, তখন
      • যদি ঘটনা [অবশিষ্ট] এবং 1 অ-শূন্য হয়, তাহলে
        • মিথ্যে ফেরত দিন
    • অন্যথায় যখন সংঘটন[অবশিষ্ট] ঘটনা [k - অবশিষ্ট] এর মতো না হয়, তখন
      • মিথ্যে ফেরত দিন
  • সত্য ফেরান

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

উদাহরণ

from collections import defaultdict
def solve(array, k):
   n = len(array)
   if n % 2 != 0:
      return False
   occurrences = defaultdict(lambda : 0)
   for i in range(0, n):
      occurrences[((array[i] % k) + k) % k] += 1
   for i in range(0, n):
      remainder = ((array[i] % k) + k) % k
      if (2 * remainder == k):
         if (occurrences[remainder] % 2 != 0):
            return False
      elif (remainder == 0):
         if (occurrences[remainder] & 1):
            return False
         elif (occurrences[remainder] != occurrences[k - remainder]):
            return False
   return True
arr = [5, 15, 6, 9]
k = 7
print(solve(arr, k))

ইনপুট

[5, 15, 6, 9], 7

আউটপুট

True

  1. ভগ্নাংশ জোড়ার সংখ্যা গণনা করার প্রোগ্রাম যার যোগফল পাইথনে 1

  2. একটি অ্যারে থেকে ট্রিপলেটের সংখ্যা পরীক্ষা করার প্রোগ্রাম যার যোগফল টার্গেটের চেয়ে কম বা পাইথন নয়

  3. প্রোগ্রাম চেক করার জন্য আমরা চারটি উপাদান খুঁজে পেতে পারি যার যোগফল পাইথনে k বা নয়

  4. পাইথনে যে সমষ্টিগুলির জন্য একটি অ্যারেকে সমান সমষ্টির সাব্যারেতে ভাগ করা যায় তা সন্ধান করুন