Latar Belakang
Mata uang resmi negara imajiner Golfenistan adalah foo , dan hanya ada tiga jenis koin yang beredar: 3 foo , 7 foo , dan 8 foo . Orang dapat melihat bahwa tidak mungkin untuk membayar jumlah tertentu, seperti 4 foos, menggunakan koin ini. Namun demikian, semua jumlah yang cukup besar dapat dibentuk. Tugas Anda adalah menemukan jumlah terbesar yang tidak dapat dibentuk dengan koin (5 foos dalam hal ini), yang dikenal sebagai masalah koin .
Memasukkan
Input Anda adalah daftar bilangan bulat positif, yang mewakili nilai koin yang beredar. Dua hal dijamin tentang hal itu:L = [n1, n2, ..., nk]
- GCD elemen
L
adalah 1. L
tidak mengandung angka 1.
Mungkin tidak disortir dan / atau mengandung duplikat (pikirkan koin edisi khusus).
Keluaran
Karena GCD dari L
adalah 1, setiap bilangan bulat yang cukup besar m
dapat dinyatakan sebagai kombinasi linier non-negatif dari elemen-elemennya; dengan kata lain, kita punya
m = a1*n1 + a2*n2 + ... + ak*nk
untuk beberapa bilangan bulat . Output Anda adalah bilangan bulat terbesar yang tidak dapat diungkapkan dalam formulir ini. Sebagai petunjuk, diketahui bahwa output selalu kurang dari , jika dan merupakan elemen maksimal dan minimal dari ( referensi ).ai ≥ 0
(n1 - 1)*(nk - 1)
n1
nk
L
Aturan
Anda dapat menulis program atau fungsi lengkap. Hitungan byte terendah menang, dan celah standar tidak diizinkan. Jika bahasa Anda memiliki operasi bawaan untuk ini, Anda mungkin tidak menggunakannya. Tidak ada persyaratan untuk efisiensi waktu atau memori, kecuali bahwa Anda harus dapat mengevaluasi kasus pengujian sebelum mengirim jawaban Anda.
Setelah saya memposting tantangan ini, pengguna @vihan menunjukkan bahwa Stack Overflow memiliki duplikat yang tepat . Berdasarkan diskusi Meta ini , tantangan ini tidak akan dihapus sebagai duplikat; namun, saya meminta semua jawaban berdasarkan versi SO harus mengutip aslinya, diberi status Komunitas Wiki, dan dihapus jika penulis asli ingin memposting jawaban mereka di sini.
Uji Kasus
[3, 7, 8] -> 5
[25, 10, 16] -> 79
[11, 12, 13, 14, 13, 14] -> 43
[101, 10] -> 899
[101, 10, 899] -> 889
[101, 10, 11] -> 89
[30, 105, 70, 42] -> 383
[2, 51, 6] -> 49
(p - 1)(q - 1)
sebagai batas atas, di mana p
dan q
merupakan elemen terkecil dan terbesar dari himpunan.
[2,3]
dalam jumlah waktu yang wajar dan tidak ada yang lain. [2,5]
akan membuat sekitar satu juta daftar Python di memori.
FrobeniusNumber
dalam Mathematica.