Computer >> 컴퓨터 >  >> 프로그램 작성 >> Python

파이썬에서 고유 숫자의 n승의 합인 숫자를 얻는 방법의 수를 찾는 프로그램

<시간/>

숫자 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
  • p + cs가 x와 같으면
    • 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