V Olimpiada Informatyczna 1997/98
|
Zadanie: MAL
|
Autor: Wojciech Rytter
|
Zawody I stopnia |
Plik źródłowy | MAL.??? (np. PAS,C, CPP) |
Plik wykonywalny | MAL.EXE |
Plik wejściowy | MAL.IN |
Plik wyjściowy | MAL.OUT |
Oba prawe kwadraty oraz dolny lewy kwadrat są matrycami stopnia i-1. W górnym lewym kwadracie nie ma żadnych otworów. Obraz otrzymuje się w następujący sposób. Najpierw ustala się trzy nieujemne liczby całkowite n,x,y. Następnie umieszcza się dwie matryce stopnia n jedna na drugiej i górną matryce przesuwa się o x kolumn w prawo i o y wierszy w górę. Tak otrzymany wzorzec zostaje umieszczony na białym płótnie i na wspólną część obu matryc nanosi się żółtą farbę. W efekcie na płótnie pojawią się żółte plamy tylo w tych miejscach, w których w obu matrycach pokrywają się.
PrzykładPrzyjrzyj się dwóm matrycom stopnia 2 przedstawionym na rysunku.
Górna matryca została przesunięta o 2 kolumny w prawo i o 2 wiersze w górę. W trzech miejscach otwory z obu matryc pokrywają się.
ZadanieNapisz program, który:
Pierwszy wiersz pliku tekstowego MAL.IN zawiera liczbę całkowitą n, 0<=n<=100. Jest to stopień matryc używanych w produkcji obrazów. W drugim wierszu zapisana jest liczba całkowita x, zaś w trzecim wierszu liczba całkowita y, 0<=x.y<=2^n. Liczba x jest liczbą kolumn, a y liczbą wierszy, o które należy przesunąć górną matrycę.
WyjścieW pierwszym wierszu pliku wyjściowego MAL.OUT należy zapisać liczbę plam na płótnie.
PrzykładDla pliku wejściowego MAL.IN
2 2 2
poprawnym rozwiązaniem jest plik wyjściowy MAL.OUT
3
Twój program powinien szukać pliku MAL.IN w katalogu bieżącym i tworzyć plik MAL.OUT również w bieżącym katalogu. Plik zawierający napisany przez Ciebie program w postaci źródłowej powinien mieć nazwę MAL.???, gdzie zamiast ??? należy wpisać co najwyżej trzyliterowy skrót nazwy użytego języka programowania. Ten sam program w postaci wykonalnej powinien być zapisany w pliku MAL.EXE