मान लीजिए हमारे पास एक संख्या x और दूसरी संख्या n है। हमें उन तरीकों की संख्या ज्ञात करनी है जिनसे हम x को कुछ अद्वितीय संख्याओं के nth घात के योग के रूप में प्राप्त कर सकते हैं।
उदाहरण के लिए, यदि इनपुट x = 100 n = 2 है, तो आउटपुट 3 होगा क्योंकि संभावित समाधान हैं: 6^2 + 8^2, 10^2 और 1^2 + 3^2 + 4^2 + 5^2 + 7^2।
समाधान दृष्टिकोण
इसे हल करने के लिए हम निम्न चरणों का पालन करेंगे:
- ans := 0
- solve() नामक एक विधि परिभाषित करें जो चार पैरामीटर x, n, cn और cs लेती है, cs और cn के प्रारंभिक मान क्रमशः 0 और 1 हैं
- p := cn^n
- जब तक p + cs < x, करें
- ans := ans + solve(x, n, cn + 1, p + cs)
- cn := cn + 1
- p := cn^n
- यदि p + cs, x के बराबर है, तो
- ans := ans + 1
- ans लौटाएं
उदाहरण
बेहतर समझ के लिए निम्न कार्यान्वयन देखें:
from math import pow
def solve(x, n, cn=1, cs=0):
ans = 0
p = pow(cn, n)
while p + cs < x:
ans += solve(x, n, cn + 1, p + cs)
cn = cn + 1
p = pow(cn, n)
if p + cs == x:
ans = ans + 1
return ans
x = 100
n = 2
print(solve(x, n))इनपुट
100, 2
आउटपुट
3