Giả sử chúng ta có một số x và một số n khác. Chúng ta phải tìm số cách để lấy x là tổng lũy thừa thứ n của một số số duy nhất.
Vì vậy, nếu đầu vào là x =100 n =2, thì đầu ra sẽ là 3 vì các nghiệm có thể là 6 ^ 2 + 8 ^ 2, 10 ^ 2 và 1 ^ 2 + 3 ^ 2 + 4 ^ 2 + 5 ^ 2 + 7 ^ 2.
Để giải quyết vấn đề này, chúng tôi sẽ làm theo các bước sau -
- ans:=0
- Xác định một phương thức có tên là giải quyết (), phương thức này sẽ nhận bốn tham số x, n, cn và cs, là tham số ban đầu
- các giá trị cho cs =0, cn =1
- p:=cn ^ n
- while p + cs
- ans:=ans + giải quyết (x, n, cn + 1, p + cs)
- cn:=cn + 1
- p:=cn ^ n
- ans:=ans + 1
Ví dụ
Hãy cùng chúng tôi xem cách triển khai sau để hiểu rõ hơn -
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))
Đầu vào
100, 2
Đầu ra
3