On vous donne un entier non négatif net un entier p >= 2. Vous devez ajouter quelques ppouvoirs ( p=2signifie carrés, p=3cubes) pour obtenir n. C'est toujours pour tout non négatif n, mais vous ne connaissez pas beaucoup de ppouvoirs -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
netpdans n'importe quel ordre. Vous pouvez supposer que toutes les entrées sont valides (nest tout entier positif,p >= 2La 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!