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

পাইথনে অ্যারে জোড়াগুলো k দিয়ে বিভাজ্য কিনা যাচাই করার প্রোগ্রাম


একটি nums অ্যারে দেওয়া আছে যেটিতে জোড় সংখ্যক উপাদান রয়েছে, এবং একটি k মান। আমাদের কাজ হলো nums-কে ঠিক n/2টি জোড়ায় ভাগ করা যাতে প্রতিটি জোড়ার যোগফল k দিয়ে বিভাজ্য হয়। সম্ভব হলে true, অসম্ভব হলে false ফেরত দিন।

যেমন, nums = [9,5,3,4,7,10,20,8], k = 3 হলে আউটপুট True। কারণ জোড়াগুলো: (9,3), (5,7), (4,20), (8,10) - সবার যোগফল ৩ দিয়ে বিভাজ্য।

সমাধানের ধাপসমূহ

  • dp := একটি খালি লিস্ট
  • count := 0
  • nums-এর প্রতিটি x এর জন্য:
    • t := k - (x mod k)
    • যদি t == k হয়, তবে count := count + 1
    • অন্যথায়, dp-তে t যোগ করুন।
  • যদি count % 2 != 0 হয়, তবে false ফেরত দিন।
  • dp সর্ট করুন।
  • low := 0, high := dp-এর আকার - 1
  • যখন low < high:
    • যদি dp[low] + dp[high] != k হয়, তবে false ফেরত দিন।
    • low := low + 1, high := high - 1
  • true ফেরত দিন।

উদাহরণ

def solve(nums, k):
    dp = []
    count = 0
    for x in nums:
        t = k - (x % k)
        if t == k:
            count += 1
        else:
            dp.append(t)
    if count % 2 != 0:
        return False
    dp.sort()
    low = 0
    high = len(dp) - 1
    while low < high:
        if dp[low] + dp[high] != k:
            return False
        low += 1
        high -= 1
    return True

nums = [9,5,3,4,7,10,20,8]
k = 3
print(solve(nums, k))

ইনপুট

[9,5,3,4,7,10,20,8], 3

আউটপুট

True

  1. সি++ STL ব্যবহার করে অ্যারে প্যালিনড্রোম কিনা তা যাচাই করার প্রোগ্রাম

  2. পাইথন প্রোগ্রাম - পয়েন্টগুলোর কনকেভ পলিগন গঠন করে কিনা তা যাচাই করুন

  3. পাইথন প্রোগ্রাম - পয়েন্টগুলোর কনভেক্স হাল গঠন করে কিনা তা যাচাই করুন

  4. পাইথনে অ্যারেয়ের সব ডিজিট ব্যবহার করে ৩ দিয়ে বিভাজ্য সংখ্যা বানানো সম্ভব কিনা চেক করা