Pentamino
ID: pentam1
Grūtība: 1/5
Laika limits: 1
Uzdevums
Pentamino figūras veido no pieciem kvadrātiem, novietojot tos tā, ka katram kvadrātam ir kopīga mala ar kādu citu.
Šoreiz izmantosim tikai trīs veida pentamino figūras:
Sauksim tās par A, B un C veida figūrām. Katra veida figūrai viens kvadrāts ir iekrāsots citādi. Sauksim to par attiecīgā veida figūras galveno kvadrātu.
Kvadrātveida rūtiņu laukumā, kura izmēri ir 8*8, izvietosim ne vairāk kā 10 iepriekšminētā veida figūras tā, lai katras figūras kvadrāti sakristu ar laukuma rūtiņām, un katra no figūrām pilnībā ietilptu laukumā. Figūras drīkst pārklāties. Figūras nedrīkst būt pagrieztas vai apgrieztas. Laukuma kolonnas ir sanumurētas no kreisās puses uz labo ar naturāliem skaitļiem no 1 līdz 8 pēc kārtas. Analoģiski no lejas uz augšu ir sanumurētas arī rindas.
Jūsu uzdevums ir uzrakstīt programmu, kas nosaka, cik no 64 laukuma rūtiņām noklāj vismaz viena pentamino figūra.
Ievaddati
Teksta faila pentam1.in pirmā rinda satur naturālu skaitli N, 1 <= N <= 10, kas apzīmē uz laukuma izvietoto pentamino figūru skaitu. Katrā no nākošajām N faila rindām tiek dotas kādas figūras apraksts formā
burts kolonnas_numurs rindas_numurs
, kur burts norāda attiecīgās figūras veidu (A,B vai C), bet kolonnas un rindas numurs norāda laukuma rūtiņu, kuru noklāj šīs figūras galvenais kvadrāts. Starp burtu un kolonnas numuru, kā arī starp kolonnas numuru un rindas numuru ir viens tukšumsimbols.
Izvaddati
Teksta faila pentam1.out vienīgajā rindā jāizvada viens naturāls skaitlis – laukuma rūtiņu skaits, ko noklāj dotās pentamino figūras.
Piemērs
pentam1.in | pentam1.out | |
5 A 2 5 C 5 7 B 7 6 C 8 1 A 4 3 |
22 |
![]() |
Atsauces
Uzdevums izmantots ACSL sacensībās 1996./97. gadā.
© 2001-2002 olimps! http://www.lio.lv/olimps/
program pentam1; var f:text; a,b,i,n:integer; t:char; arr:array [1..9,1..9] of byte; procedure add(); begin arr[a,b]:=1; case t of 'A': begin arr[a,b-1]:=1; arr[a,b-2]:=1; arr[a+1,b-2]:=1; arr[a+2,b-2]:=1; end; 'B': begin arr[a+1,b]:=1; arr[a+1,b-1]:=1; arr[a,b-1]:=1; arr[a,b-2]:=1; end; 'C': begin arr[a,b+1]:=1; arr[a-1,b]:=1; arr[a-2,b]:=1; arr[a-3,b]:=1; end; end; end; {========================} begin assign(f,'pentam1.in'); reset(f); readln(f,n); for i:=1 to n do begin readln(f,t,a,b); add(); end; close(f); a:=0; for i:=1 to 8 do for n:=1 to 8 do a:=a+arr[i,n]; assign(f,'pentam1.out'); rewrite(f); writeln(f,a); close(f); end.
Результат: 10/10
Вот моя свеже испеченная программа, написал с первого раза и получил 10/10. Редко такое бывает. =)