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!
sumber
Jawaban:
Pyth,
2019 byteDisimpan 1 byte berkat FryAmTheEggman.
Mengambil input pada dua baris,
p
pertama dan kemudiann
.Cobalah online. Suite uji.
Penjelasan
Kode mendefinisikan fungsi rekursif
y(b)
yang mengembalikan hasilnyamin_powers(b, p)
.sumber
Mathematica
6150 byteDengan 11 byte yang disimpan oleh LegionMammal978.
Ketika terbatas pada kekuatan menghitung angka, masalah ini sangat mudah (dalam Mathematica). Ketika diperluas untuk memasukkan kekuatan bilangan bulat, itu adalah mimpi buruk.
Uji Kasus
PowersRepresentationsp[n,k,p]
menemukan semua kasus di manan
dapat dinyatakan sebagai jumlahk
bilangan bulat positif dinaikkan ke-thep
power.Sebagai contoh,
Memeriksa,
sumber
Jawa -
183177 byte183 byte
Tidak disatukan
Hasil
sumber
p(32,2)
kembali5
ketika seharusnya kembali2
(4^2 + 4^2 = 32
).Python 2, 66 byte
Secara rekursif mencoba mengurangi masing-masing
p
kekuatan-yang membuat sisanya non-negatif, menghitung nilainya pada setiap sisa, dan mengambil minimum plus 1. Pada 0, output 0.Cek jelek
if n/k**p
(setara denganif k**p<=n
) adalah untuk menghentikan fungsi dari masuk ke negatif dan mencoba untuk mengambilmin
dari daftar kosong. Jika Python memilikinyamin([])=infinity
, ini tidak diperlukan.sumber
C (gcc) , 122 byte
Cobalah online!
sumber