ধরুন, অ-ঋণাত্মক সংখ্যাগুলোর একটি তালিকা এবং একটি ধনাত্মক মান 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