Ti viene dato un numero intero non negativo ne un numero intero p >= 2. È necessario aggiungere un po 'di ppoteri ( p=2significa quadrati, p=3significa cubi) insieme per ottenere n. Questo è sempre per qualsiasi non negativo n, ma non conosci molti ppoteri (di qualsiasi numero intero positivo ) di cui avrai bisogno.
Questo è il tuo compito: trova il numero minimo di ppotenze 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
nepin qualsiasi ordine. Puoi presumere che tutti gli input siano validi (nè un numero intero positivo,p >= 2L'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!