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