Tweet ini mencantumkan kemungkinan pesanan untuk Wings of a Chinese restaurant 1 :
Saat memesan Pizza, saya biasanya menghitung ukuran apa yang memberi saya rasio harga Pizza terbaik yang merupakan perhitungan sederhana. Namun meminimalkan harga pesanan di restoran ini bukan tugas yang mudah, jadi saya ingin bersiap untuk pesanan berikutnya di sana.
Tantangan
Diberikan bilangan bulat lebih besar atau sama dengan , tugas Anda adalah mengembalikan satu kemungkinan pesanan yang meminimalkan harga (termurah keseluruhan) dan jumlah transaksi.
Contoh
Jika saya memesan Wings, ternyata tawaran terbaik akan dikenakan biaya . Namun ada beberapa pesanan yang akan dikenakan biaya sebesar itu, yaitu:
[50,50],[25,25,50],[25,25,25,25]
Karena pesanan pertama akan menggunakan jumlah penawaran paling sedikit ( ) hasilnya akan[50,50]
.
Aturan
- Input akan berupa bilangan bulat
- Output akan berupa daftar / larik / ... ukuran pesanan yang berjumlah hingga dan meminimalkan harga pesanan
- Anda dapat memilih untuk mengembalikan semua pesanan yang mungkin
Testcases
4 -> [4] (4.55)
23 -> [23] (26.10)
24 -> [6,18],[9,15],[12,12] (27.20)
31 -> [6,25] (34.60)
32 -> [4,28],[6,26],[7,25] (35.75)
33 -> [4,29],[5,28],[6,27],[7,26],[8,25] (36.90)
34 -> [6,28],[9,25] (38.00)
35 -> [35] (39.15)
125 -> [125] (139.00)
200 -> [25,50,125] (222.40)
201 -> [26,50,125] (223.55)
250 -> [125,125] (278.00)
251 -> [26,50,50,125] (279.15)
418 -> [15,28,125,125,125],[18,25,125,125,125] (465.20)
1001 -> [26,50,50,125,125,125,125,125,125,125] (1113.15)
12345 -> [15,80,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125],[25,70,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125],[45,50,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125] (13728.10)
Catatan: Testcases ini mencantumkan semua kemungkinan output termasuk harga, Anda hanya diharuskan untuk output satu dan Anda tidak diharuskan untuk output harga!
1: Anda dapat menemukan data sebagai CSV di sini .
Jawaban:
JavaScript (ES6), 123 byte
Mengembalikan urutan sebagai string yang dipisahkan oleh spasi.
Cobalah online!
Bagaimana?
Diberi nomorn sayap, kami rekursif menerapkan strategi berikut.
Nilai tinggi:n > 128 atau n = 125
Untuk nilai tinggi, opsi terbaik kami adalah membeli125 sayap. Jadi itulah yang kami lakukan selama n lebih besar dari atau sama dengan 129 atau ketika n persis sama dengan 125 .
Kita tidak bisa melakukan itu untuk125 < n < 129 karena kita akan dibiarkan dengan kurang dari 4 sayap untuk membeli, yang tidak mungkin.
Nilai rendah:n<31
sumber
JavaScript (Node.js) ,
112108106105 byteCobalah online!
Dioptimalkan dari jawaban Arnauld
Perbedaan
467 byte disimpan)sumber
Retina 0.8.2 ,
160155 byteKonversikan ke unary.
Ulangi sampai tidak ada lagi transaksi yang dapat dibeli.
Temukan cara untuk membeli penawaran dan menangkap serta menggandakan salah satu penawaran.
Penawaran dibeli dengan ketentuan sebagai berikut:
Beli 80 sayap jika tersisa 0, 6, 9, 12, 15, 18, 25 atau 28 sayap.
Beli 70 sayap jika hanya itu yang kita butuhkan.
Beli 9 sayap jika itu menyisakan 15 atau 40 sayap.
Beli 30, 35, 40 atau 45 sayap jika hanya itu yang kami butuhkan.
Beli 26, 27, 28 atau 29 sayap jika hanya itu yang kita butuhkan.
Beli 4 hingga 23 sayap jika itu yang kita butuhkan.
Beli 125, 50, atau 25 sayap jika kita bisa dan jika kita masih bisa membeli lebih banyak sayap dengan tepat. Perhatikan bahwa kami memiliki opsi ini di akhir pergantian sehingga pembelian yang tepat diuji terlebih dahulu.
sumber