1749 - Zona 4

De la Universitas MediaWiki

Enunț

Considerăm o matrice pătratică cu N linii și N coloane. În această matrice sunt definite 4 zone:

zona 1, formată din elementele situate strict deasupra diagonalei principale și strict deasupra diagonalei secundare;
zona 2, formată din elementele situate strict deasupra diagonalei principale și strict sub diagonala secundară;
zona 3, formată din elementele situate strict sub diagonala principală și strict sub diagonala secundară;
zona 4, formată din elementele situate strict sub diagonala principală și strict deasupra diagonalei secundare;

Cerinţa

Se dă o matrice pătratică și un număr natural Z, reprezentând o zonă din matrice. Să se determine suma elementelor din zona Z.

Date de intrare

Programul citește de la tastatură numerele N Z, iar apoi N*N numere naturale, reprezentând elementele matricei.

Date de ieşire

Dacă datele sunt introduse corect,pe ecran se va afișa :"Datele sunt introduse corect.",apoi pe un rând nou numărul S, reprezentând suma elementelor din zona Z a matricei.În cazul contrar,se va afișa pe ecran "Datele nu corespund restricțiilor impuse.".

Restricții și precizări

  • 1 ⩽ N ⩽ 200
  • 1 ⩽ Z ⩽ 4
  • elementele matricei vor fi mai mici decât 1000

Exemplu

Intrare
5 2
7 4 8 5 10
7 7 10 2 2
1 2 8 8 4
9 9 5 3 2
3 6 7 1 7
Ieșire
Datele sunt introduse corect.
16

Explicație

Elementele din zona 2 sunt 2 8 4 2, cu suma 16.


Rezolvare

def validare_matrice(matrice):
    n = len(matrice)
    # Verificăm dacă matricea este pătratică
    for linie in matrice:
        if len(linie) != n:
            return False
    # Verificăm dacă elementele matricei sunt mai mici decât 1000
    for i in range(n):
        for j in range(n):
            if matrice[i][j] >= 1000:
                return False
    return True

def suma_zona(matrice, z):
    n = len(matrice)  # dimensiunea matricei

    s = 0  # suma inițială este 0

    # pentru fiecare zonă, adăugăm elementele corespunzătoare la suma
    if z == 1:
        # Zona 1 este triunghiulară și se află sub diagonala principală
        for i in range(n):
            for j in range(n):
                if i < j and i + j < n:  # condiția pentru a fi în zona 1
                    s += matrice[i][j]  # adăugăm elementul la sumă

    elif z == 2:
        # Zona 2 este triunghiulară și se află deasupra diagonalei principale
        for i in range(n):
            for j in range(n):
                if i < j and i + j > n - 1:  # condiția pentru a fi în zona 2
                    s += matrice[i][j]  # adăugăm elementul la sumă

    elif z == 3:
        # Zona 3 este triunghiulară și se află deasupra diagonalei secundare
        for i in range(n):
            for j in range(n):
                if i > j and i + j > n - 1:  # condiția pentru a fi în zona 3
                    s += matrice[i][j]  # adăugăm elementul la sumă

    elif z == 4:
        # Zona 4 este triunghiulară și se află sub diagonala secundară
        for i in range(n):
            for j in range(n):
                if i > j and i + j < n:  # condiția pentru a fi în zona 4
                    s += matrice[i][j]  # adăugăm elementul la sumă

    return s  # returnăm suma calculată

if __name__ == '__main__':
    dimensiune, zona = input().split() 
    z = int(zona)
    matrice = []
    for i in range(n):
        linie = [int(x) for x in input().split()]
        matrice.append(linie)

    if validare_matrice(matrice):
        s = suma_zona(matrice, z)
        print(("Datele sunt introduse corect.\n"))
        print(s)
    else:
        print("Datele nu corespund restricțiilor impuse.")