0608 - NkX

De la Universitas MediaWiki
Versiunea din 29 octombrie 2023 08:47, autor: Ghisa Catalin (discuție | contribuții) (Pagină nouă: == Cerinţa == Se dau două numere naturale '''n''' și '''k''', cu proprietatea că '''2*k < n'''. Să se afişeze pe ecran elementele unei matrice pătratice de dimensiune '''n''', formată din valorile '''1''' şi '''2''', construită astfel: * valorile de pe diagonala principală sunt '''1'''; * valorile de pe '''k''' pseudodiagonale paralele cu diagonala principală şi situate imediat deasupra acesteia sunt '''1'''; * valorile de pe '''k''' pseudodiagonale paralele cu...)
(dif) ← Versiunea anterioară | Versiunea curentă (dif) | Versiunea următoare → (dif)

Cerinţa

Se dau două numere naturale n și k, cu proprietatea că 2*k < n. Să se afişeze pe ecran elementele unei matrice pătratice de dimensiune n, formată din valorile 1 şi 2, construită astfel:

  • valorile de pe diagonala principală sunt 1;
  • valorile de pe k pseudodiagonale paralele cu diagonala principală şi situate imediat deasupra acesteia sunt 1;
  • valorile de pe k pseudodiagonale paralele cu diagonala principală şi situate imediat sub aceasta sunt 1;
  • valorile de pe diagonala secundară sunt 1;
  • valorile de pe k pseudodiagonale paralele cu diagonala secundară şi situate imediat deasupra acesteia sunt 1;
  • valorile de pe k pseudodiagonale paralele cu diagonala secundară şi situate imediat sub aceasta sunt 1;
  • restul valorilor din matrice sunt 2.

Date de intrare

Programul citește de la tastatură numerele n k.

Date de ieșire

Programul va afișa pe ecran matricea construită, câte o linie a matrice pe o linie a ecranului, elementele de pe o line fiind separate prin exact un spaţiu.

Restricţii şi precizări

  • 1 ⩽ n ⩽ 100

Exemplu

Intrare
10 1
Ieșire
1 1 2 2 2 2 2 2 1 1
1 1 1 2 2 2 2 1 1 1
2 1 1 1 2 2 1 1 1 2
2 2 1 1 1 1 1 1 2 2
2 2 2 1 1 1 1 2 2 2
2 2 2 1 1 1 1 2 2 2
2 2 1 1 1 1 1 1 2 2
2 1 1 1 2 2 1 1 1 2
1 1 1 2 2 2 2 1 1 1
1 1 2 2 2 2 2 2 1 1

Rezolvare

def main():
    # Citim numerele n și k de la tastatură
    n, k = map(int, input().split())

    # Inițializăm matricea cu valori de 2
    matrice = [[2] * n for _ in range(n)]

    # Parcurgem fiecare element din matrice
    for i in range(n):
        for j in range(n):
            # Dacă elementul se află pe una dintre diagonalele specificate, îl setăm la 1
            if abs(i - j) <= k or abs(i + j - n + 1) <= k:
                matrice[i][j] = 1

    # Afișăm matricea, fiecare linie pe o linie nouă și elementele separate prin spațiu
    for linie in matrice:
        print(' '.join(map(str, linie)))



if __name__ == "__main__":
    main()