2359 - Cifre 13

From Bitnami MediaWiki

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 la N, iar coloanele de la 1 la M.
  • 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">

  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
  1. 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>