1082 - Triunghi 3: Difference between revisions
No edit summary |
No edit summary |
||
Line 32: | Line 32: | ||
=== Lipește codul aici === | === Lipește codul aici === | ||
1 | <syntaxhighlight lang="python" line="1"> | ||
| |||
import sys | import sys | ||
Line 40: | Line 41: | ||
a = [[0] * 1001 | a = [[0] * 1001 | ||
for i in | for i in range(1001)] x = [] for i in range(1, n+1): | ||
poz, nr = map(int, input().split()) | |||
x.append((nr, poz)) | |||
a[n-i+1][poz] = nr | |||
for i in range(2, n+1): | for i in range(2, n+1): | ||
pz = x[n-i+1][1] - 1 | |||
while pz >= 1: | |||
a[i][pz] = a[i-1][pz] - a[i][pz+1] | |||
pz -= 1 | |||
pz = x[n-i+1][1] + 1 | |||
while pz <= i: | |||
a[i][pz] = a[i-1][pz-1] - a[i][pz-1] | |||
pz += 1 | |||
for i in range(1, n+1): | for i in range(1, n+1): | ||
print(a[n][i], end=' ') | |||
</syntaxhighlight> |
Latest revision as of 14:21, 14 December 2023
Se consideră un triunghi alcătuit din numere naturale scrise pe n
linii ca în figura alăturată. Liniile triunghiului sunt numerotate de la 1
la n
, începând cu linia de la baza triunghiului (linia de jos), iar poziţiile pe linie sunt numerotate începând cu 1
de la stânga la dreapta.
Fiecare număr din triunghi, exceptând pe cele de pe linia 1
, este egal cu suma numerelor aflate imediat sub el, în stânga şi respectiv în dreapta lui.
Cerinţă[edit | edit source]
Cunoscând câte un număr de pe fiecare linie a triunghiului, determinaţi toate numerele de pe linia 1
.
Date de intrare[edit | edit source]
Fișierul de intrare triunghi3.in
conține pe prima linie numărul natural n
reprezentând numărul de linii din triunghi. Pe următoarele n
linii sunt descrise informaţiile despre triunghi. Mai exact, pe linia i
(1≤i≤n
) dintre cele n
se află două numere naturale separate prin spaţiu pi
vi
indicând poziţia şi respectiv valoarea numărului cunoscut de pe linia i
a triunghiului.
Date de ieșire[edit | edit source]
Fișierul de ieșire triunghi3.out
va conține o singură linie, pe care se găsesc n
numere naturale separate prin câte un spaţiu, reprezentând în ordine de la stânga la dreapta numerele scrise pe linia 1
a triunghiului.
Restricții și precizări[edit | edit source]
1 ≤ n ≤ 1000
1 ≤ pi ≤ n+1-i
, pentru1≤i≤n
- Toate numerele din triunghi sunt numere naturale cu cel mult
18
cifre.
Exemplu:[edit | edit source]
triunghi3.in
5 4 4 2 5 3 13 2 25 1 45
triunghi3.out
1 2 3 4 2
Încărcare soluție[edit | edit source]
Lipește codul aici[edit | edit source]
<syntaxhighlight lang="python" line="1">
import sys
n = int(input())
a = [[0] * 1001
for i in range(1001)] x = [] for i in range(1, n+1):
poz, nr = map(int, input().split()) x.append((nr, poz)) a[n-i+1][poz] = nr
for i in range(2, n+1):
pz = x[n-i+1][1] - 1 while pz >= 1: a[i][pz] = a[i-1][pz] - a[i][pz+1] pz -= 1 pz = x[n-i+1][1] + 1 while pz <= i: a[i][pz] = a[i-1][pz-1] - a[i][pz-1] pz += 1
for i in range(1, n+1):
print(a[n][i], end=' ')
</syntaxhighlight>