Streszczenie wykonawcze
Biorąc pod uwagę wejście k
znajdziesz partycję liczb całkowitych 1
, aby n
do k
SUM-wolny podzbiorów dla największych n
można w ciągu 10 minut.
Tło: liczby Schur
Zestaw A
jest sum, jeśli jego suma A + A = { x + y | x, y in A}
nie ma z nim żadnych wspólnych elementów.
Dla każdej dodatniej liczby całkowitej k
istnieje największa liczba całkowita, S(k)
dzięki czemu zestaw {1, 2, ..., S(k)}
można podzielić na k
podzbiory bez sum. Ten numer nazywa się k- tym numerem Schura (OEIS A045652 ).
Na przykład S(2) = 4
. Możemy podzielić {1, 2, 3, 4}
jako{1, 4}, {2, 3}
, i jest to unikalny podział na dwa podzbiory bez sumy, ale nie możemy teraz dodać żadnego 5
z nich.
Wyzwanie
Napisz program deterministyczny, który wykonuje następujące czynności:
- Weź dodatnia
k
jako wejście - Zapisz aktualny znacznik czasu Unix na standardowe wyjście
- Wysyła sekwencję partycji
1
don
wk
podzestawy bez sumy w celu zwiększenian
, po każdej sekwencji z bieżącym znacznikiem czasu Unix.
Zwycięzcą zostanie program, który wydrukuje partycję największej n
w ciągu 10 minut na moim komputerze po otrzymaniu danych wejściowych 5
. Więzy zostaną zerwane przez najszybszy czas na znalezienie partycji dla największej n
, uśrednionej dla trzech przebiegów: dlatego dane wyjściowe powinny zawierać znaczniki czasu.
Ważne szczegóły:
- Mam Ubuntu Precise, więc jeśli twój język nie jest obsługiwany, nie będę mógł go ocenić.
- Mam czterordzeniowy procesor Intel Core2, więc jeśli chcesz korzystać z wielowątkowości, nie ma sensu używać więcej niż 4 wątków.
- Jeśli chcesz, żebym użył konkretnych flag kompilatora lub implementacji, udokumentuj to wyraźnie w swojej odpowiedzi.
- Nie będziesz specjalnie kodować swojego kodu do obsługi danych wejściowych
5
. - Nie musisz przedstawiać każdej znalezionej poprawy. Np. Dla danych wejściowych
2
można wyprowadzić tylko partycjęn = 4
. Jeśli jednak nie wyprowadzisz niczego w ciągu pierwszych 10 minut, zdobędę to jakon = 0
.
n=59
i sortowanie według największej liczby dozwolonych liczb mniejszej niżnextN
dajen=64
. Sortowanie według długości niedozwolonej listy numerów (która może zawierać powtórzenia) prowadzi bardzo szybko do eleganckiegon=30
wzoru.