숫자 x와 또 다른 숫자 n이 있다고 가정합니다. 일부 고유 숫자의 n승의 합으로 x를 얻을 수 있는 여러 가지 방법을 찾아야 합니다.
따라서 입력이 x =100 n =2와 같으면 가능한 솔루션은 6^2 + 8^2, 10^2 및 1^2 + 3^2 + 4^2 + 5^이기 때문에 출력은 3이 됩니다. 2 + 7^2.
이 문제를 해결하기 위해 다음 단계를 따릅니다. −
- ans :=0
- solve()라는 메서드를 정의하면 4개의 매개변수 x, n, cn 및 cs가 필요하며 초기
- cs =0, cn =1에 대한 값
- p :=cn^n
- p + cs
- ans :=ans + solve(x, n, cn + 1, p + cs)
- cn :=cn + 1
- p :=cn^n
- ans :=ans + 1
예시
이해를 돕기 위해 다음 구현을 살펴보겠습니다. −
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