Ti viene dato un numero intero non negativo n
e un numero intero p >= 2
. È necessario aggiungere un po 'di p
poteri ( p=2
significa quadrati, p=3
significa cubi) insieme per ottenere n
. Questo è sempre per qualsiasi non negativo n
, ma non conosci molti p
poteri (di qualsiasi numero intero positivo ) di cui avrai bisogno.
Questo è il tuo compito: trova il numero minimo di p
potenze che possono essere sommate n
.
Esempi
>>> 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 articolo di Wikipedia su questo problema, il problema di Waring .
Regole
Il tuo codice deve essere un programma o una funzione.
L'input è di due numeri interi
n
ep
in qualsiasi ordine. Puoi presumere che tutti gli input siano validi (n
è un numero intero positivo,p >= 2
L'output è un numero intero che rappresenta il numero di potenze necessarie per sommare
n
.Questo è il golf del codice, quindi vince il programma più breve , non necessariamente il più efficiente.
Sono consentiti tutti gli incorporamenti.
Come sempre, se il problema non è chiaro, per favore fatemi sapere. Buona fortuna e buon golf!