ধরুন আমাদের অ-ঋণাত্মক সংখ্যার একটি তালিকা এবং একটি ধনাত্মক মান k দেওয়া হয়েছে। আমাদেরকে সংখ্যার সর্বাধিক যোগফল খুঁজে বের করতে হবে যাতে যোগফলটি k দ্বারা বিভাজ্য হয়।
সুতরাং, যদি ইনপুট হয়, nums =[4, 6, 8, 2], k =2, তাহলে আউটপুট হবে 20।
পুরো অ্যারের যোগফল 20, যা 2 দ্বারা বিভাজ্য।
এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -
-
numsSum :=ইনপুট তালিকা সংখ্যার মানের সমষ্টি
-
অবশিষ্ট :=সংখ্যাসম মোড k
-
যদি অবশিষ্টাংশ 0 এর সমান হয়, তাহলে
-
রিটার্ন numsSum
-
-
তালিকার সংখ্যাগুলি সাজান
-
প্রতিটি সংখ্যা সংমিশ্রণের জন্য tpl সংখ্যায়। করুন
-
subSeqSum :=sum(tpl)
-
যদি subSeqSum mod k অবশিষ্টাংশের সমান হয়, তাহলে
-
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