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 p
i
v
i
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 ≤ p
i
≤ 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
Explicație
Triunghiul este:
45 20 25 8 12 13 3 5 7 6 1 2 3 4 2
Cum e corect?
cout < "As la info";
cout << "As la info";
cout >> "As la info";
Felicitări! Poți mai mult?
Avem sute de probleme pentru tine, fiecare cu explicații ușor de înțeles.
Greșit, dar nu-i bai!
Antrenează-te cu sutele de probleme pe care ți le-am pregătit. Îți explicăm fiecare problemă în parte.
Rezolvare
Iată rezolvarea de 100 de puncte pentru problema Triunghi3:
//Mot Nistor
/* triunghi O(n*n) */
#include <stdio.h>
#define M 1001
int main()
{int i,j,n,p[M];
long long r,t,v[M],L[M];
FILE *fi,*fo;
fi=fopen("triunghi3.in","r");
fo=fopen("triunghi3.out","w");
fscanf(fi,"%d",&n);
for(i=1;i<=n;i++) fscanf(fi,"%d %lld",&p[i],&v[i]);
L[1]=v[n];
for(i=n-1;i>0;i--)
{t=L[p[i]]; L[p[i]]=v[i];
for(j=p[i]+1;j<=n+1-i;j++)
{r=t-L[j-1]; t=L[j]; L[j]=r;}
for(j=p[i]-1;j>0;j--)
L[j]-=L[j+1];
}
for(i=1;i<=n;i++)
fprintf(fo,"%lld ",L[i]);
fprintf(fo,"
"); fclose(fo);
return 0;
}
Atenție
Enunțurile afișate pe această pagină aparțin exclusiv site-ului PbInfo. Astfel, pentru ștergerea conținutului, puteți să ne contactați la adresa .
Rezolvarea problemei #1082 Triunghi3
Pe această pagină găsești rezolvarea de 100 de puncte pentru problema #1082 Triunghi3 de pe PbInfo.ro. Atenție: nu încurajăm copiatul codului! Totuși, credem cu tărie că analizarea unei soluții corecte este o metodă foarte ușoară de a învăța informatică, astfel că oferim sursele pentru peste 1500 de probleme de pe platforma PbInfo.ro.
Pentru rezolvări PbInfo de la peste 1500 de probleme, vă invităm să intrați pe site-ul nostru!