3417 - Gen Mat 28
Cerința[edit | edit source]
Scrieți un program care citește de la tastatură un număr natural n
și construiește o matrice cu n
linii și n
coloane ale cărei elemente vor primi valori dupa cum urmează:
- În colțul din stânga sus, de coorodnate
1 1
, va fi1
. - În pozițiile adiacente, de coordonate
1 2
și2 1
, va fin
. - În pozițiile adiacente, de coordonate
1 3
,2 2
și3 1
, va fi2
. - În pozițiile adiacente, de coordonate
1 4
,2 3
,3 2
și4 1
, va fin-1
. - Și așa mai departe…
- În penultimele poziții, de coordonate
n-1 n
șin n-1
, va fin
. - În ultima poziție, de coordonate
n n
, va fi1
.
Date de intrare[edit | edit source]
Programul citește de la tastatură numarul n
.
Date de ieșire[edit | edit source]
Programul afișează pe ecran matricea construită, câte o linie a matricei pe câte o linie a ecranului, elementele fiecărei linii fiind separate prin câte un spaţiu.
Restricții și precizări[edit | edit source]
3 ≤ n ≤ 30
Exemplu[edit | edit source]
Intrare
5
Ieșire
1 5 2 4 3 5 2 4 3 4 2 4 3 4 2 4 3 4 2 5 3 4 2 5 1
Explicație[edit | edit source]
S-a citit 5
și se afisează o matrice de 5
linii și 5
coloane, unde 1
se află in colțul din stânga sus, apoi în pozițiile învecinate se află 5
, apoi 2
și tot așa până se va completa matricea.
Încărcare soluție[edit | edit source]
Lipește codul aici[edit | edit source]
<syntaxhighlight lang="python" line="1"> n = int(input())
v = [0] * 61
lc = 0
st = 1
dr = n
for i in range(1, 2*n+1):
if i % 2 == 1:
if v[i-1] != st:
lc += 1
v[lc] = st
st += 1
else:
st += 1
else:
if v[i-1] != dr:
lc += 1
v[lc] = dr
dr -= 1
else:
dr -= 1
for i in range(1, n+1):
for j in range(1, n+1):
print(v[i+j-1], end=" ")
print()
</syntaxhighlight>