Pentru a intra în seiful unei bănci se află un terminal și trebuie utilizat un cifru.
Terminalul este un aparat pe care se află caractere ce pot fi cifre de la 0 la 9 și caracterele # și *, așezate sub forma unui tablou cu 4 linii si 3 coloane. Un terminal este valid dacă conține fiecare cifră de la 0 la 9 și caracterele # și *.
Cifrul este un număr natural și este corect dacă și numai dacă oricare două cifre consecutive ale sale se află în terminal pe poziții vecine pe linii sau pe coloană.
Exemple:
Terminalul de mai jos este valid. Fiecare cifră apare exact o dată; la fel și caracterele * și #.
| 5 | 2 | * |
| 1 | 4 | 7 |
| 0 | 9 | 6 |
| 8 | 3 | # |
Pentru acest terminal cifrul 4247693 este corect, iar cifrul 15234 nu este corect.
Terminalul de mai jos nu este valid. Cifra 2 apare de două ori și nu apare cifra 6.
| 5 | 2 | * |
| 1 | 4 | 7 |
| 0 | 9 | 2 |
| 8 | 3 | # |
Gigel, informaticianul băncii, trebuie să răspundă la două întrebări:
1) Dându-se configuratia a T terminale, să se determine câte sunt valide.
2) Dându-se un terminal valid și N numere naturale, să se stabilească pentru fiecare dacă reprezintă un cifru corect în raport cu terminalul dat.
Cerința
Scrieți un program care să îl ajute pe Gigel să răspundă la întrebări.
Date de intrare
Fișierul de intrare cifru.in conține pe prima linie numărul natural P, care poate fi doar 1 sau 2.
Dacă P = 1, pe a doua linie a fișierului se află un număr natural T. Urmează configurația a T terminale, fiecare ocupând câte 4 linii, a câte 3 caractere, separate prin spații. Fiecare configuratie este urmată de o linie goală.
Dacă P = 2, următoarele 4 linii conțin câte trei caractere, separate prin spații, reprezentând configurația unui terminal valid. Următoarea linie conține numărul N. Următoarea linie contine un sir de N numere naturale separate prin câte un spațiu.
Date de ieșire
Dacă P = 1, fișierul de ieșire cifru.out va conține un număr natural C, reprezentând numărul de terminale valide dintre cele T.
Dacă P = 2, fișierul de ieșire cifru.out va conține N linii. Pe fiecare se va afla numărul 1 sau numărul 0, după cum numărul corespunzător din șir este sau nu un cifru corect.
Restricții și precizări
- pentru
P = 1,T ≤ 10; - fiecare terminal contine doar caractere din mulțimea
{0, 1, ..., 9, *, #}; - pentru
P = 2,N ≤ 100și numerele din șir sunt mai mici decât1015; - pentru 50 de puncte,
P = 1.
Exemplul 1
cifru.in
1 2 5 2 * 1 4 7 0 9 6 8 3 # 5 2 * 1 4 7 0 9 2 8 3 #
cifru.out
1
Explicație
P = 1, deci se rezolvă cerința 1. Terminalele sunt cele din exemplul de mai sus.
Exemplul 2
cifru.in
2 5 2 * 1 4 7 0 9 6 8 3 # 2 247693 15234
cifru.out
1 0
Explicație
P = 2, deci se rezolvă cerința 2. Primul număr dintre cele două reprezintă un cifru corect, iar al doilea nu reprezintă un cifru corect.