.campion
conectare | înregistrare | căutare
Pagina principală » Probleme » operatii1

ultima problemă
grupă: mică
sursă: OMI 2016
ultimul articol
autor: Prof. Radu Vişinescu
ultimul software
autor: Prof. Emanuela Cerchez
 .campion
operatii1


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 operatii1.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 operatii1.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

operatii1.in operatii1.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
propunător: Prof. Emanuela Cerchez
emanuela.cerchez@gmail.com
Articole recomandate
Probleme recomandate
De la .campion 2011: ore, pegals, valet, xpn, efect, nrperm, b2k, sumdivprod, nr0, maxviz, oneton, oras1, ksecv, ripstick, antic, oak, nor, nrpomi, sumprod, paisprezece, cover1, prisme, gxor, progresii, anagramabil, zuma, nrpal, sdmin, lista, codarb, codpatrat, adprod, puncte4, qtri, reconst, gsm, subsiruri, mijloc, trifoi, cubulete, romb, maxbin, albine2, probleme, triburi1, megascoala
De acelaşi autor: premii, finala, fractii, trei, manevre, nrcuv, an, vopsea, opmat, tramvai, bipal, kpal, sarpe, replace, factori, barca, perechi, grupe, cod, reactii, factura, decript, trenuri, holo, cifre, firma, tribile, mesaj, tricouri, pajura, monede, programs, fry, repeat, red, pavaj, bacan, nrbinar, invest, cutie2, loc, depou, nr3, zid, felinare, sir3, sqr, carte, labirint, stea, count, evaluare, super, schimb, zaruri, vectori, spirala, desen1, rima, ceas1, romane, sms, bac, excursia, joc7, furnici, munte1, cezar, marcare, excursie1, culmi, sume1, schi, nr4, fractie, cod3, medii, tren3, top, sant1, imagine, ocr, perfect, pluton, reforma, alee, ceas2, paritate, borcane, aranjare, comoara1, culmi1, reactivi, submult, sablon1, sir8, sume2, dansatori, smith, tom, matriosca, asociativ, control1, calorii, immortal, concat, mat, cubinvers, mine, divizori, cheie, stelar, joct, minmax, cladire, adunscad, razboi, ore, oras1, sumprod, prisme, lgdrum, unupatru, chibrituri, extraprime, prieten, rebus1, grindina, opmult, betisoare, antitero, clase, pagini, ornament, ordine, spioni1
Despre generare: taste, pluricex, balbe, magic3, formule, grup, zmeu, nr01, reteta2, playlist, pizza1, caramele, caini, tvshow, adevar, prime1, hexa, premii1, carti2, bile4, hof, matrx, cubinvers, arctir, guess, minmax, stele, tablou1, adunscad, sumprod, prisme, expeval, triburi1, optim, patru, genab, dineu, cumpanit, nkd, relatii, wb
surse trimise | ajutor