음이 아닌 정수 n와 정수가 제공 p >= 2됩니다. 를 얻으려면 몇 p번째 거듭 제곱 ( p=2제곱, p=3큐브)을 더해야 n합니다. 이것은 항상 음이 아닌 모든 것을위한 n것이지만 필요한 양의 정수 p의 많은 제곱을 알지 못합니다 .
이것은 당신의 임무입니다 :에 p합할 수있는 최소 제곱의 수를 찾으십시오 n.
예
>>> min_powers(7, 2)
4 # you need at least four squares to add to 7
# Example: (2)^2 + (1)^2 + (1)^2 + (1)^2 = 4 + 1 + 1 + 1 = 7
>>> min_powers(4, 2)
1 # you need at least one square to add to 4
# Example: (2)^2 = 4
>>> min_powers(7, 3)
7 # you need at least seven cubes to add to 7
# Example: 7*(1)^3 = 7
>>> min_powers(23, 3)
9 # you need at least nine cubes to add to 23
# Example: 2*(2)^3 + 7*(1)^2 = 2*8 + 7*1 = 23
이 문제에 관한 Wikipedia 관련 기사, Waring 's problem .
규칙
코드 는 프로그램 또는 함수 여야합니다 .
입력은 2 개의 정수
n이며p순서에 관계없이 입력됩니다 . 모든 입력이 유효하다고 가정 할 수 있습니다 (n양의 정수,p >= 2출력은에 필요한 전력의 수를 나타내는 정수
n입니다.이것은 코드 골프이므로 가장 짧은 프로그램이 승리합니다. 반드시 가장 효율적인 것은 아닙니다.
모든 내장 기능이 허용됩니다.
문제가 명확하지 않은 경우 언제든지 알려주십시오. 행운과 좋은 골프!