operatii


Timp maxim de execuţie/test:
1.8 secunde
Memorie totală disponibilă/stivă:
2MB/1 MB

Se dă un şir de k cifre (maxim 10) nenule şi un număr întreg N.  Se poate obţine N din cele k cifre punând între ele operaţiile de adunare, scădere, înmulţire şi împărţire cu numere întregi? De exemplu, pentru şirul de numere 1 2 3 4 5 6  şi numărul N = 0, răspunsul este DA, se poate obţine: 6/2+1-3-5/4 = 3+1-3-1=0.
De remarcat că pentru exemplul anterior există 83754 soluţii.

Cerinţă

Fiind dat numărul N şi un şir de k cifre zecimale, să se determine o expresie aritmetică, formată din cele k cifre, a cărei evaluare va genera valoarea N. În expresia aritmetică pot fi folosiţi operatorii cu numere întregi +, -, *, / cu semnificaţia obişnuită dintr-un limbaj de programare. De asemenea, prioritatea operatorilor este cea cunoscută din matematică.

Date de intrare

De pe prima linie a fişierului de intrare operatii.in se citeşte valoarea întreagă N şi valoarea naturală k. Acestea sunt separate printr-un singur spaţiu. Pe linia a doua a fişierului de intrare se găsesc cele k cifre separate prin câte un spaţiu.

Date de ieşire

Pe prima linie a fişierului de ieşire operatii.out se va scrie o expresie aritmetică corectă care conţine cele k cifre şi cei k operatori. Dacă prima cifră este precedată, în expresie, de semnul '+', acesta NU va apărea în expresie.

Restricţii

  • se utilizează toate cele k <= 10 cifre
  • ordinea cifrelor în expresie nu contează
  • în şirul iniţial cifrele se pot repeta
  • operaţia de împărţire produce câtul împărţirii întregi
  • evaluarea expresiei se realizează de la stânga spre dreapta, efectuându-se mai întâi operaţiile de grad 2 (*, /), în ordinea în care apar în expresie, apoi, tot de la stânga spre dreapta, operaţiile de grad 1 (+, -), tot în ordinea în care apar în expresie 
  • valoarea expresiei finale este in intervalul [-3486784401, 3486784401]
  • pentru datele de intrare există întotdeauna soluţie
  • expresia din fişierul de ieşire NU conţine spaţii
  • expresia se termină cu caracterul "sfârşit de linie" (ENTER)

Exemple

operatii.in operatii.out Explicaţii
0 6
1 2 3 4 5 6
6-1+4/5-2-3 Evaluare: 6-1+0-2-3 = 5+0-5 = 0
O altă soluţie este cea indicată în enunţ
-80 4
9 9 9 9
-9*9+9/9 Evaluare: -81+1 = -80
prof. Marinel Şerban
Colegiul Naţional „Emil Racoviţă” Iaşi
marinel_serban@yahoo.com