1772 - Progresie 2

De la Universitas MediaWiki

Cerința

Se consideră o progresie aritmetică cu primul termen a1 și rația r, precum și un număr n. Să se afișeze o matrice pătratică cu n linii și n coloane care să conțină termenii acestei progresii astfel:

  • prima coloană va conține primii n termeni, în ordine, de sus în jos
  • a doua coloană va conține următorii n termeni, în ordine, de sus în jos etc.

Date de intrare

Programul citește de la tastatură numerele a1, r, n.

Date de ieșire

Programul va afișa pe ecran elementele matricei, câte o linie a matricei pe o linei a ecranului, elementele de pe fiecare linie fiind separate prin câte un spațiu.

Restricții și precizări

  • 1 ⩽ n ⩽ 200
  • elementele matricei vor fi numere întregi ce pot fi reprezentate pe 4 octeți cu semn.

Exemplu 1

Intrare
-7 3 4
Ieșire
-7 5 17 29
-4 8 20 32
-1 11 23 35
2 14 26 38


Exemplu 2

Intrare
0
0
0
Ieșire
Nu au fost respectate cerintele impuse


Rezolvare

#1772 - Progresie2
def is_valid_input(a1, r, n):
    return 1 <= n <= 200 and isinstance(a1, int) and isinstance(r, int)

def build_matrix(a1, r, n):
    matrix = [[0] * n for _ in range(n)]

    for j in range(n):
        for i in range(n):
            matrix[i][j] = a1 + i * r + j * r * n

    return matrix

def print_matrix(matrix):
    for row in matrix:
        print(" ".join(map(str, row)))

if __name__ == "__main__":
    a1 = int(input("Introduceți primul termen a1: "))
    r = int(input("Introduceți rația r: "))
    n = int(input("Introduceți numărul n: "))

    if is_valid_input(a1, r, n):
        result_matrix = build_matrix(a1, r, n)
        print_matrix(result_matrix)
    else:
        print("Nu au fost respectate cerintele impuse.")