मान लीजिए हमारे पास एक संख्या n है। हमें n का भाजक ढूंढना है जो इन शर्तों के आधार पर बेहतर है: हमारे पास दो संख्याएं p और q हैं, वह जिसका अंकों का योग बड़ी संख्या है, उसे दूसरे से बेहतर कहा जाता है। जब अंकों का योग समान होता है, तो छोटी संख्या बेहतर होती है।
उदाहरण के लिए, यदि इनपुट n = 180 है, तो आउटपुट 9 होगा क्योंकि भाजक हैं [1, 2, 3, 4, 5, 6, 9, 10, 12, 15, 18, 20, 30, 36, 45, 60, 90, 180]। तो जिन संख्याओं के अंकों का योग अधिकतम है वे हैं [9, 18, 36, 45, 90, 180], लेकिन उनमें से 9 बेहतर संख्या है क्योंकि इसका मान छोटा है।
समाधान दृष्टिकोण
इसे हल करने के लिए हम निम्न चरणों का पालन करेंगे:
- div := 1, md := 1
- i के लिए 2 से n तक की रेंज में, करें
- k := i
- यदि n mod i > 0, तो
- अगले इटरेशन के लिए जाएं
- s := 0
- जब तक k > 0, करें
- s := s + k mod 10
- k := k / 10
- यदि s > md, तो
- md := s
- div := i
- div लौटाएं
उदाहरण
बेहतर समझ के लिए निम्न कार्यान्वयन देखें:
def solve(n):
div = 1
md = 1
for i in range(2, n + 1):
k = i
if n % i > 0:
continue
s = 0
while k > 0:
s += k % 10
k //= 10
if s > md:
md = s
div = i
return div
n = 180
print(solve(n))इनपुट
180
आउटपुट
9