मान लीजिए कि हमें गैर-ऋणात्मक संख्याओं की एक सूची दी गई है, और एक धनात्मक मान k दिया गया है। हमें संख्याओं के बाद के अधिकतम योग का पता लगाना है ताकि योग k से विभाज्य हो।
इसलिए, यदि इनपुट, अंक =[4, 6, 8, 2], k =2 जैसा है, तो आउटपुट 20 होगा।
पूरे सरणी का योग 20 है, जो 2 से विभाज्य है।
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -
-
numsSum :=इनपुट सूची अंकों में मानों का योग
-
शेष :=numsSum mod k
-
यदि शेषफल 0 के समान है, तो
-
वापसी संख्या योग
-
-
सूची संख्या क्रमित करें
-
अंक में प्रत्येक संख्या संयोजन 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