Você recebe um número inteiro não negativo n
e um número inteiro p >= 2
. Você precisa adicionar alguns p
-ésimos poderes ( p=2
quadrados, p=3
cubos) para obter n
. Isso é sempre para qualquer não-negativo n
, mas você não conhece muitos p
poderes (de qualquer número inteiro positivo ) que precisará.
Esta é sua tarefa: encontre o número mínimo de p
-ésimos poderes aos quais pode somar n
.
Exemplos
>>> 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
Um artigo relacionado da Wikipedia sobre esse problema, o problema de Waring .
Regras
Seu código deve ser um programa ou uma função.
A entrada é dois inteiros
n
ep
em qualquer ordem. Você pode assumir que todas as entradas são válidas (n
qualquer número inteiro positivo,p >= 2
A saída é um número inteiro que representa o número de potências necessárias para somar
n
.Isso é código de golfe, portanto o programa mais curto vence., Não necessariamente o mais eficiente.
Todo e qualquer embutido é permitido.
Como sempre, se o problema não estiver claro, entre em contato. Boa sorte e bom golfe!