Diferente pentru problema/plus2 intre reviziile #4 si #10

Nu exista diferente intre titluri.

Diferente intre continut:

== include(page="template/taskheader" task_id="plus2") ==
Locuitorii planetei Aritmo au hotărât ca în celebrul an 2012 să le explice pământenilor metoda „plus” de adunare a numerelor naturale pe planeta lor. La fel ca şi planetele, înainte de adunare, numerele se aliniază astfel încât să se obţină cât mai multe cifre egale pe aceleaşi poziţii. Cifrele egale, astfel obţinute, se elimină din cele două numere. Pentru a obţine rezultatul final, se adună  cele două numerele deplasate, obţinute după eliminare, ca în exemplu.
!problema/plus2?enunt1.jpg! !problema/plus2?enunt2.jpg! !problema/plus2?enunt3.jpg!
!problema/plus2?enunt1.jpg 200 x 250!   !problema/plus2?enunt2.jpg 200 x 250!   !problema/plus2?enunt3.jpg 200 x 250!
Exemplu: Numerele $18935$ şi $85352$ se aliniază ca în figura alăturată. După eliminare se obţin numerele $19$ şi $52$ care se adună deplasate, pentru a obţine rezultatul final. Aşadar $18935 plus 85352 = 242$.
Dacă există mai multe posibilităţi de a alinia numerele astfel încât să se elimine acelaşi număr maxim de cifre, atunci numerele sunt aliniate astfel încât, după eliminare şi adunarea numerelor după metoda descrisă, să se obţină o valoare cât mai mare.
Exemple: $23 plus 523 = 5$, $562 plus 56 = 2$.
Adunarea mai multor numere se face de la stânga la dreapta: se adună primele două numere conform metodei descrise mai sus, apoi rezultatul se adună cu al treilea, şi aşa mai departe.
Într-o expresie în care se adună mai multe numere pot să apară paranteze rotunde. În evaluarea unei asemenea expresii, numită _expresie parantezată_, se efectuează mai întâi adunările din paranteze conform metodei descrise mai sus, parantezele fiind apoi înlocuite cu rezultatul adunărilor din paranteze.
Se defineşte $adâncimea A{~E~}$ corespunzătoare unei expresii parantezate $E$ astfel:
Expresia a{~e~}
* dacă expresia $E$ nu conţine paranteze, atunci adâncimea acesteia este $0$;
* dacă expresia $E$ este de forma $(F)$, atunci $A{~E~} = 1 + A{~F~}$;
* dacă expresia $E$ este de forma $E1 plus E2…plus Ek$, atunci $A{~E~} = max(A{~E1~}, A{~E2~}, ..., A{~Ek~})$.
 
h2. Cerinţe
 
Pentru a-i ajuta pe pământenii care doresc să înveţe acest nou mod de adunare, scrieţi un program care citeşte o expresie parantezată şi determină:
a) adâncimea expresiei date;
b) valoarea acestei expresii.
h2. Date de intrare
Fişierul de intrare $plus2.in$ ...
Fişierul de intrare $plus2.in$ conţine pe prima linie un număr natural $n$. Pe următoarele $n$ linii se află descrierea expresiei parantezate. Pe fiecare dintre aceste linii se află un  număr natural sau una dintre valorile $-1$ sau $-2$. Valoarea $-1$ reprezintă o paranteză rotundă deschisă iar valoarea $-2$ reprezintă o paranteză rotundă închisă.
h2. Date de ieşire
În fişierul de ieşire $plus2.out$ ...
Fişierul de ieşire $plus2.out$ va conţine:
 
* pe prima linie numărul natural ce reprezintă adâncimea expresiei date;
* pe a doua linie se va scrie numărul natural ce reprezintă rezultatul evaluării expresiei date, adunarea numerelor făcându-se conform metodei descrise.
h2. Restricţii
* $... ≤ ... ≤ ...$
* $1 < n ≤ 2000$
* fiecare dintre celelalte numere naturale din fişier are cel mult $9$ cifre;
* în fiecare paranteză se află cel puţin un număr natural;
* dacă într-o paranteză se află un singur număr natural, atunci valoarea expresiei este egală cu valoarea numărului din paranteză;
* pentru rezolvarea corectă a cerinţei $a)$ se acordă $20%$ din punctaj, iar pentru rezolvarea corectă a ambelor cerinţe se acordă punctajul integral.
h2. Exemplu
table(example). |_. plus2.in |_. plus2.out |
| This is some
  text written on
  multiple lines.
| This is another
  text written on
  multiple lines.
| 12
-1
1343
-1
234
4532
-2
-2
14091
-1
21
2
-2
| 2
4639
|
h3. Explicaţie
...
Expresia parantezată care trebuie evaluată este:
$(1343 plus (234 plus 4532)) plus 14091 plus (21 plus 2) =$
$(1343 plus 45334) plus 14091 plus (21 plus 2) =$
$4543 plus 14091 plus (21 plus 2)=$
$4543 plus 14091 plus 1=$
$46391 plus 1=4639$
Valoarea expresei este $4639$.
Adâncimea expresiei este $2$, deoarece
 
* $A{~(1343 plus (234 plus 4532)) plus 14091 plus (21 plus 2)~} = max(A{~(1343 plus (234 plus 4532))~}, A{~14091~}, A{~(21 plus 2)~}) = max(2, 0, 1) = 2$
* $A{~(1343 plus (234 plus 4532))~} = 1 + max(A{~1343~}, A{~(234 plus 4532)~}) = 1 + max(0, 1) = 2$
* $A{~1343~} = 0$
* $A{~(234 plus 4532)~} = 1 + A{~(234 plus 4532)~} = 1 + 0 = 1$
== include(page="template/taskfooter" task_id="plus2") ==

Nu exista diferente intre securitate.

Diferente intre topic forum:

 
7738