Mari kita himpunan bilangan bulat lebih besar dari 1 dan menyebutnya X . Kami akan mendefinisikan S (i) sebagai himpunan semua anggota X yang dapat dibagi oleh i di mana i> 1 . Ingin memilih dari himpunan bagian ini sekelompok set sedemikian rupa
Persatuan mereka adalah himpunan X
Tidak ada elemen X dalam dua set.
Sebagai contoh, kita dapat menyusun kembali {3..11}
sebagai
{3,4,5,6,7,8,9,10,11}
S(3): {3, 6, 9, }
S(4): { 4, 8, }
S(5): { 5, 10, }
S(7): { 7, }
S(11):{ 11}
Beberapa set tidak dapat diekspresikan dengan cara ini. Sebagai contoh jika kita ambil {3..12}
, 12
adalah kelipatan dari 3 dan 4 yang mencegah set kita menjadi saling eksklusif.
Beberapa set dapat diekspresikan dalam berbagai cara, misalnya {4..8}
dapat direpresentasikan sebagai
{4,5,6,7,8}
S(4): {4, 8}
S(5): { 5, }
S(6): { 6, }
S(7): { 7, }
tetapi juga bisa direpresentasikan sebagai
{4,5,6,7,8}
S(2): {4, 6, 8}
S(5): { 5, }
S(7): { 7, }
Tugas
Tujuan kami adalah untuk menulis sebuah program yang akan menetapkan sebagai input dan menghasilkan jumlah himpunan bagian terkecil yang menutupinya dengan cara ini. Jika tidak ada, Anda harus menampilkan beberapa nilai selain bilangan bulat positif (misalnya 0
).
Ini adalah pertanyaan kode-golf sehingga jawaban akan dinilai dalam byte, dengan lebih sedikit byte yang lebih baik.
Tes
{3..11} -> 5
{4..8} -> 3
{22,24,26,30} -> 1
{5} -> 1
[5..5]
? Bisakah kita menerima hal-hal seperti [8..4]
?
12
Adalah kelipatan dari keduanya 3
dan 4
mencegah perangkat kami menjadi saling eksklusif ": mengapa? Saya tidak melihat hal lain dalam pernyataan masalah yang mengharuskan 12
masuk ke kedua himpunan bagian.
[22,24,26,30]
semua kelipatan 2
. Apakah Anda yakin tidak akan lebih baik untuk menghapus ini dan memasukkannya ke kotak pasir?