Limit pamięci: 8MB.
Na pewnej planecie żyje para królików. Co roku liczba królików wzrasta
dwukrotnie (nawet jeśli jest tylko jeden), pod koniec każdego roku zaś, jeśli (podwojona już) liczba
królików na to pozwala, dokładnie 3≤X≤30000000 królików zostaje
ewakuowanych rakietą w celu podboju kosmosu, przy czym X jest zawsze
liczbą nieparzystą.
Króliki zajmują się więc głównie produkcją rakiet - w tym celu dzielą
się na grupki po K (2≤K≤1000). W kolejnych
latach albo mogą się równo podzielić, albo zostaje kilka królików,
które nie mogą utworzyć grupy. Powoduje to głębokie społeczne problemy
na wiele lat, dlatego astrolodzy próbują przewidzieć wzorce wystąpień
takich zdarzeń na przestrzeni wieków. Twoim zadaniem jest napisanie
programu, który, mając dany ciąg długości 1≤N≤1000, znajdzie
najbliższe M (1≤M≤10000) takich N-rocznych okresów,
że j-ty rok ma równo podzielone króliki
wtedy i tylko wtedy, gdy j-ty element ciągu jest równy 0. Okresy te
mogą się pokrywać. W roku 1 są 2 króliki.
W jedynej linijce wypisz kolejno M najmniejszych (parami różnych) liczb
r1,...,rM, takich, że liczba królików w roku
ri+j jest podzielna przez K wtedy i tylko wtedy, gdy
aj=0.
Wiadomo, że rM≤1018.
W 50% przypadków rM≤107.
W 90% przypadków X jest liczbą pierwszą.
wejście | wyjście |
---|---|
1009 4 2 2 0 0 0 0 |
1 2 |
wejście | wyjście |
---|---|
1009 4 2 3 1 0 1 0 |
17 111 |
[Zgłoś rozwiązanie] [Moje zgłoszenia]