Anda diberi bilangan bulat negatif n
dan bilangan bulat p >= 2
. Anda perlu menambahkan beberapa p
kekuatan-ke-dua ( p=2
artinya kuadrat, p=3
artinya kubus) untuk mendapatkan n
. Ini selalu untuk non-negatif n
, tetapi Anda tidak tahu banyak p
kekuatan-ke-10 (dari bilangan bulat positif ) apa pun yang Anda perlukan.
Ini adalah tugas Anda: cari jumlah minimum p
kekuatan -th yang bisa dijumlahkan n
.
Contohnya
>>> 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
Artikel Wikipedia terkait tentang masalah ini, masalah Waring .
Aturan
Kode Anda harus berupa program atau fungsi.
Input adalah dua bilangan bulat
n
danp
dalam urutan apa pun. Anda dapat menganggap semua input valid (n
apakah bilangan bulat positif,p >= 2
Output adalah bilangan bulat yang mewakili jumlah daya yang dibutuhkan untuk dijumlahkan
n
.Ini adalah kode golf, sehingga program terpendek menang., Belum tentu yang paling efisien.
Setiap dan semua bawaan diizinkan.
Seperti biasa, jika masalahnya tidak jelas, beri tahu saya. Semoga berhasil dan bermain golf dengan baik!