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

পাইথনে সর্বোচ্চ K-বিভাজ্য উপক্রম যোগফল নির্ণয়

ধরুন, অ-ঋণাত্মক সংখ্যাগুলোর একটি তালিকা এবং একটি ধনাত্মক মান k দেওয়া আছে। এমন একটি উপক্রম খুঁজে বের করতে হবে যার যোগফল k দিয়ে বিভাজ্য এবং যোগফল সর্বোচ্চ হয়।

উদাহরণ: nums = [4, 6, 8, 2], k = 2 হলে আউটপুট ২০, কারণ পুরো তালিকার যোগফল ২০ যা ২ দিয়ে বিভাজ্য।

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

  • numsSum := nums তালিকার যোগফল
  • remainder := numsSum % k
  • যদি remainder == 0 হয় তবে numsSum ফেরত দিন
  • nums সর্ট করুন
  • nums-এর সব সম্ভাব্য সংযোজন (combination) tpl এর জন্য:
    • subSeqSum := sum(tpl)
    • যদি subSeqSum % k == remainder হয় তবে numsSum - subSeqSum ফেরত দিন
  • 0 ফেরত দিন

উদাহরণ কোড

from itertools import chain, combinations
class Solution:
    def solve(self, nums, k):
        numsSum = sum(nums)
        remainder = numsSum % k
        if remainder == 0:
            return numsSum
        nums.sort()
        for tpl in chain.from_iterable(combinations(nums, r) for r in range(1, len(nums) + 1)):
            subSeqSum = sum(tpl)
            if subSeqSum % k == remainder:
                return numsSum - subSeqSum
        return 0

ob1 = Solution()
print(ob1.solve([4, 6, 8, 2], 2))

ইনপুট

[4, 6, 8, 2], 2

আউটপুট

20
  1. পাইথনে গ্রাফে সর্বোচ্চ ক্লিকের ন্যূনতম আকার বের করার প্রোগ্রাম

  2. পাইথন প্রোগ্রামে অ্যারের যোগফল বের করা

  3. পাইথন প্রোগ্রাম অ্যারেতে সবচেয়ে বড় এলিমেন্ট বের করা

  4. পাইথনে অ্যারের যোগফল বের করা