1082 - Triunghi 3
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ţă
Cunoscând câte un număr de pe fiecare linie a triunghiului, determinaţi toate numerele de pe linia 1
.
Date de intrare
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
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
1 ≤ n ≤ 1000
1 ≤ pi ≤ n+1-i
, pentru1≤i≤n
- Toate numerele din triunghi sunt numere naturale cu cel mult
18
cifre.
Exemplu:
triunghi3.in
5 4 4 2 5 3 13 2 25 1 45
triunghi3.out
1 2 3 4 2
Încărcare soluție
Lipește codul aici
<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>