0991 - Matrice 5
Cerința[edit | edit source]
Se dă o matrice pătratică cu n
linii și n
coloane, numerotate de la 1
la n
și elemente numere naturale. Să se determine suma elementelor aflate strict deasupra diagonalei secundare a matricei.
Se va defini și folosi subprogramul sub
, cu 3
parametri:
n
– dimensiunea matriceix
– matriceak
– un număr natural,1 < k ≤ 2*n
care va returna suma tuturor elementelor aij
din matrice pentru care i + j = k
.
!!!Variabila k nu va fi folosită deloc. Programul va afișa doar suma elementelor de pe diagonala secundară.
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 suma determinată. În cazul în care restricțiile nu sunt îndeplinite, se va afișa un mesaj corespunzător.
Restricții și precizări[edit | edit source]
1 ≤ n ≤ 100
- elementele matricei sunt numere naturale mai mici decât
1000
- liniile matricei sunt numerotate de la
1
lan
.
Exemplul 1[edit | edit source]
Input:
4
1 6 3 1
6 1 3 1
1 3 1 6
3 1 6 1
Output:
18
Exemplul 2[edit | edit source]
Input:
121
1 6 3 1
6 1 3 1
1 3 1 6
3 1 6 1
Output consola:
n trebuie să fie între 1 și 100 inclusiv.
Rezolvare[edit | edit source]
<syntaxhighlight lang="python3" line="1"> def sub(n, x, k=0):
if not check_constraints(n,matrix): return suma = 0 for i in range(0, n-1): for j in range(0, n-1-i): suma += x[i][j] return suma
def check_constraints(n, matrix):
if not(1 <= n <= 100): print("n trebuie să fie între 1 și 100 inclusiv.") for row in matrix: for elem in row: if elem >= 1000: print("Elementele matricei trebuie să fie mai mici decât 1000.")
- Citirea datelor de intrare
with open("matriceIN.txt", "r") as fin:
n = int(fin.readline()) matrix = [list(map(int, fin.readline().split())) for _ in range(n)]
- Calculul si afisarea sumei elementelor deasupra diagonalei secundare in fisierul de iesire
with open("matriceOUT.txt", "w") as fout:
fout.write(str(sub(n,matrix)))
</syntaxhighlight>