2359 - Cifre 13
Pe o foaie de matematică cu N x M
pătrăţele, Maria desenează C
cifre. Fiecare cifră este desenată într-o zonă formată din 7 x 4
pătrăţele albe şi negre denumite pixeli, aşa cum este ilustrat mai jos :
Fiecare pixel ocupă exact un pătrăţel pe foaia de matematică. Evident, pe foaie Maria va desena doar pixelii negri.
Cerința[edit | edit source]
Determinaţi numărul de pătrăţele negre de pe foaia de matematică după ce au fost desenate cele C
cifre.
Date de intrare[edit | edit source]
Fișierul de intrare cifre13.in
conţine pe prima linie numerele naturale N M C
cu semnificaţia din enunţ. Pe fiecare dintre următoarele C
linii se găseşte câte un triplet de numere naturale t lin col
ce descrie cifrele scrise de Maria şi poziţiile acestora pe foaia de matematică. Mai exact, t
este cifra ce va fi scrisă pe foaie, iar lin col
reprezintă linia, respectiv coloana pe care este plasat colţul stânga-sus al zonei care reprezintă cifra în cadrul foii de matematică.
Date de ieșire[edit | edit source]
Fișierul de ieșire cifre13.out
va conţine o singură linie pe care va fi scris numărul de pătrăţele negre existente pe foaia de matematică, după desenarea celor C
cifre.
Restricții și precizări[edit | edit source]
1 ≤ N, M ≤ 1000
1 ≤ C ≤ 100000
- Liniile de pe foaia de matematică sunt numerotate de la
1
laN
, iar coloanele de la1
laM
. 0 < lin , col ≤ 1000
0 ≤ t ≤ 9
- Zonele pe care sunt desenate cifrele se pot suprapune.
- Cifrele pot să încapă parţial pe foaie.
Exemplu:[edit | edit source]
cifre13.in
10 10 2 4 2 3 6 4 6
cifre13.out
23
<syntaxhighlight lang="python" line="1">
- Modelele pentru cifrele 0-9
cifre = {
'0': [ "1111", "1001", "1001", "1001", "1001", "1001", "1111" ], '1': [ "0010", "0110", "0010", "0010", "0010", "0010", "1111" ], '2': [ "1111", "0001", "0001", "1111", "1000", "1000", "1111" ], '3': [ "1111", "0001", "0001", "1111", "0001", "0001", "1111" ], '4': [ "1001", "1001", "1001", "1111", "0001", "0001", "0001" ], '5': [ "1111", "1000", "1000", "1111", "0001", "0001", "1111" ], '6': [ "1111", "1000", "1000", "1111", "1001", "1001", "1111" ], '7': [ "1111", "0001", "0001", "0001", "0001", "0001", "0001" ], '8': [ "1111", "1001", "1001", "1111", "1001", "1001", "1111" ], '9': [ "1111", "1001", "1001", "1111", "0001", "0001", "1111" ]
}
def numar_patratele_negre(cifre, cifra):
"""Numără pătrățelele negre dintr-o cifră specifică""" model = cifre[cifra] return sum(row.count('1') for row in model)
def total_patratele_negre(cifre, lista_cifre):
"""Calculează numărul total de pătrățele negre pentru toate cifrele date""" total = 0 for cifra in lista_cifre: total += numar_patratele_negre(cifre, cifra) return total
- Exemplu de utilizare
def main():
import sys input = sys.stdin.read # Citim datele data = input().strip() lista_cifre = data.split() # Calculăm numărul total de pătrățele negre total_negre = total_patratele_negre(cifre, lista_cifre) # Afișăm rezultatul print(total_negre)
if __name__ == "__main__":
main()
</syntaxhighlight>