मान लीजिए हमारे पास एक संख्या n है, हमें जांचना है कि n के सम स्थानों पर स्थित अंकों का गुणनफल, n के विषम स्थानों पर स्थित अंकों के योग से विभाज्य है या नहीं। स्थानों की गिनती दाएं से बाएं शुरू होती है। सबसे दायां अंक स्थान 1 पर होता है।
उदाहरण के लिए, यदि इनपुट n = 59361 है, तो आउटपुट True होगा क्योंकि (1 × 3 × 5) = 15 और (6 + 9) = 15, और 15, 15 से विभाज्य है।
हल करने का तरीका
- digit_count := दी गई संख्या n के अंकों की संख्या
- total := 0, prod := 1
- जब तक n > 0:
- यदि digit_count सम है, तो:
- prod := prod × n का अंतिम अंक
- अन्यथा:
- total := total + n का अंतिम अंक
- n := n / 10 का भागफल
- digit_count := digit_count - 1
- यदि digit_count सम है, तो:
- यदि prod, total से विभाज्य है, तो True लौटाएं
- अन्यथा False लौटाएं
उदाहरण कोड
from math import log10
def solve(n):
digit_count = int(log10(n)) + 1
total = 0
prod = 1
while n > 0:
if digit_count % 2 == 0:
prod *= n % 10
else:
total += n % 10
n = n // 10
digit_count -= 1
if prod % total == 0:
return True
return False
n = 59361
print(solve(n))
इनपुट
59361
आउटपुट
True