0987 - Matrice 4

From Bitnami MediaWiki

Cerința[edit | edit source]

Se dă o matrice pătratică cu n linii și n coloane și elemente numere naturale. Să se afișeze indicii liniilor pentru care suma elementelor este număr par.

Se va defini și folosi subprogramul suma, cu 3 parametri:

  • x – matricea
  • n – dimensiunea matricei
  • p – un număr natural, 1 ≤ p ≤ n

care va returna suma elementelor de pe linia p a matricei x.

Date de intrare[edit | edit source]

Fișierul de intrare matriceIN.txt conține pe prima linie numărul n, iar următoarele n linii câte n numere naturale, reprezentând elementele matricei.

Date de ieșire[edit | edit source]

Fișierul de ieșire matriceOUT.txt va conține pe prima linie indicii determinați, separați prin exact un spațiu, în ordine crescătoare.

Restricții și precizări[edit | edit source]

  • 1 ≤ n ≤ 100
  • elementele matricei sunt numere naturale mai mici decât 1 000 000
  • liniile matricei sunt numerotate de la 1 la n.

Exemplul 1[edit | edit source]

Input:

4

1 2 3 4

1 1 1 2

2 2 41 8

3 3 10 2

Output:

1 4

Exemplul 2[edit | edit source]

Input:

51

1 2 3

1 2 3

1 2 3

Output consola:

Dimensiunea n nu respecta restrictiile.

Rezolvare[edit | edit source]

<syntaxhighlight lang="python3" line="1"> def suma(x, n, p):

   # Implementarea subprogramului suma
   return sum(x[p-1])

def verificare_dimensiune_n(n):

   # Verifică restricțiile pentru dimensiunea n
   return 1 <= n <= 100

def verificare_elemente_matrice(matrice):

   # Verifică restricțiile pentru elementele matricei
   for linie in matrice:
       for elem in linie:
           if not (0 <= elem < 1000000):
               return False
   return True

def main():

   # Citirea datelor de intrare din fisierul matrice4.in
   with open("matriceIN.txt", "r") as file_in:
       n = int(file_in.readline().strip())
       matrice = [list(map(int, file_in.readline().split())) for _ in range(n)]
   # Verificarea restricțiilor pentru dimensiunea n
   if not verificare_dimensiune_n(n):
       print("Dimensiunea n nu respecta restrictiile.")
       return
   # Verificarea restricțiilor pentru elementele matricei
   if not verificare_elemente_matrice(matrice):
       print("Elementele matricei nu respecta restrictiile.")
       return
   # Determinarea indiciilor liniilor cu suma elementelor număr par
   linii_par = [i+1 for i in range(n) if suma(matrice, n, i+1) % 2 == 0]
   # Scrierea rezultatului în fisierul matrice4.out
   with open("matriceOUT.txt", "w") as file_out:
       file_out.write(" ".join(map(str, linii_par)))

if __name__ == "__main__":

   main()

</syntaxhighlight>