Вам дано неотрицательное целое число 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 .
правила
Ваш код должен быть программой или функцией.
Ввод двух целых
n
иp
в любом порядке. Вы можете предположить, что все входные данные действительны (n
любое положительное целое число,p >= 2
Выход - целое число, представляющее количество степеней, необходимое для суммирования
n
.Это код гольф, поэтому выигрывает самая короткая программа . Не обязательно самая эффективная.
Любые встроенные модули разрешены.
Как всегда, если проблема неясна, пожалуйста, дайте мне знать. Удачи и хорошего гольфа!