Weźmy zbiór liczb większych niż 1 i nazwać X . Zdefiniujemy S (i) jako zbiór wszystkich elementów X podzielnych przez i, gdzie i> 1 . Chciałbym wybrać z tych podzbiorów grupę takich zestawów
Ich związek jest zbiorem X
Żaden element X nie znajduje się w dwóch zestawach.
Na przykład możemy przegrupować {3..11}
jako
{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}
Niektórych zestawów nie można wyrazić w ten sposób. Na przykład, jeśli weźmiemy {3..12}
, 12
jest wielokrotnością zarówno 3, jak i 4, co zapobiega wzajemnemu wykluczaniu się naszych zestawów.
Niektóre zestawy można na przykład wyrazić na wiele sposobów {4..8}
można je przedstawić jako
{4,5,6,7,8}
S(4): {4, 8}
S(5): { 5, }
S(6): { 6, }
S(7): { 7, }
ale można to również przedstawić jako
{4,5,6,7,8}
S(2): {4, 6, 8}
S(5): { 5, }
S(7): { 7, }
Zadanie
Naszym celem jest napisanie programu, który pobierze zestaw jako dane wejściowe i wyprowadzi najmniejszą liczbę podzbiorów, które pokrywają go w ten sposób. Jeśli nie ma, powinieneś podać jakąś wartość inną niż dodatnia liczba całkowita (na przykład0
).
To jest golf golfowy pytanie w więc odpowiedzi będą oceniane w bajtach, przy czym mniej bajtów jest lepszych.
Testy
{3..11} -> 5
{4..8} -> 3
{22,24,26,30} -> 1
{5} -> 1
[5..5]
? Czy możemy otrzymać takie rzeczy [8..4]
?
12
jest wielokrotnością obu 3
i 4
zapobiega wzajemnemu wykluczaniu się naszych zbiorów ”: dlaczego? W opisie problemu nie widzę nic innego, co wymagałoby 12
przejścia do obu podzbiorów.
[22,24,26,30]
są wielokrotnościami 2
. Czy jesteś pewien, że nie byłoby lepiej, aby usunąć to i piaskownicy?