On vous donne un entier non négatif n
et un entier p >= 2
. Vous devez ajouter quelques p
pouvoirs ( p=2
signifie carrés, p=3
cubes) pour obtenir n
. C'est toujours pour tout non négatif n
, mais vous ne connaissez pas beaucoup de p
pouvoirs -th (d'aucun entier positif ) dont vous aurez besoin.
C'est votre tâche: trouver le nombre minimum de p
-th pouvoirs qui peuvent résumer n
.
Exemples
>>> 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
Un article Wikipédia sur ce problème, le problème de Waring .
Règles
Votre code doit être un programme ou une fonction.
L'entrée est deux entiers
n
etp
dans n'importe quel ordre. Vous pouvez supposer que toutes les entrées sont valides (n
est tout entier positif,p >= 2
La sortie est un entier représentant le nombre de puissances nécessaires pour additionner à
n
.C'est le golf de code, donc le programme le plus court gagne., Pas nécessairement le plus efficace.
Tous les éléments intégrés sont autorisés.
Comme toujours, si le problème n'est pas clair, faites-le moi savoir. Bonne chance et bon golf!