ধরুন আমাদের একটি সংখ্যা x এবং আরেকটি সংখ্যা n আছে। আমাদের বের করতে হবে x-কে কতভাবেই কিছু অনন্য সংখ্যার n-তম ঘাতের যোগফল হিসেবে প্রকাশ করা যায়।
উদাহরণস্বরূপ, যদি ইনপুট x = 100 এবং n = 2 হয়, তবে আউটপুট হবে 3 কারণ সম্ভাব্য সমাধানগুলো হলো 6^2 + 8^2, 10^2 এবং 1^2 + 3^2 + 4^2 + 5^2 + 7^2।
সমাধানের ধাপসমূহ
ans := 0solve()মেথড ডিফাইন করুন যা চারটি প্যারামিটার নেবে:x, n, cn, cs; প্রাথমিক মানcs = 0, cn = 1p := cn^nwhile p + cs < x:ans := ans + solve(x, n, cn + 1, p + cs)cn := cn + 1p := 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