Zadanie: TET Tetris - ASD-SIO

Transkrypt

Zadanie: TET Tetris - ASD-SIO
Zadanie: TET
Tetris
Dost˛epna pami˛eć: 64 MB.
Mamy plansz˛e o szerokości 4 i wysokości n, podzielona˛ na 4n kwadratów jednostkowych. Mamy do dyspozycji mnóstwo
klocków takich jak w klasycznej odmianie gry Tetris, które możemy obracać — też jak w Tetrisie, czyli o wielokrotności kata
˛
90◦ . Na ile sposobów możemy pokryć wszystkie pola naszej planszy klockami?
Dla jasności: kwadraty jednostkowe klocków musza˛ si˛e dokładnie pokrywać z kwadratami jednostkowymi planszy; klocki
nie moga˛ nachodzić na siebie ani wystawać poza plansz˛e; klocków każdego rodzaju mamy dowolnie wiele. Dwa pokrycia
uważamy za różne, jeśli po nałożeniu jednego na drugie jakiś klocek nie leży równo na swoim odpowiedniku w drugim pokryciu.
Przypomnienie, jak wygladaj
˛ a˛ klocki w Tetrisie: http://pl.wikipedia.org/wiki/Tetris.
Wejście
W pierwszym i zarazem jedynym wierszu wejścia znajduja˛ si˛e dwie liczby całkowite n oraz m (1 ≤ n, m ≤ 109 ).
Wyjście
Twój program powinien wypisać jedna˛ nieujemna˛ liczb˛e całkowita:
˛ reszt˛e z dzielenia przez m liczby pokryć prostokata
˛ 4×n
klockami z Tetrisa.
Przykład
Dla danych wejściowych:
poprawnym wynikiem jest:
3 1000
23
natomiast dla danych:
poprawnym wynikiem jest:
5 1000000000
454
1/1
Tetris