0987 - Matrice 4

De la Universitas MediaWiki

Cerința

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

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

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

  • 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

Input:

4

1 2 3 4

1 1 1 2

2 2 41 8

3 3 10 2

Output:

1 4

Exemplul 2

Input:

51

1 2 3

1 2 3

1 2 3

Output consola:

Dimensiunea n nu respecta restrictiile.

Rezolvare

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()