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

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


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

Ana are o temă lungă şi plictisitoare la chimie: are o listă de ecuaţii chimice şi trebuie să determine care dintre acestea sunt corecte. Pentru fiecare ecuaţie este specificată o formulă chimică ce constituie membrul stâng al ecuaţiei şi o listă de formule din care Ana trebuie să aleagă formulele ce ar putea fi plasate în membrul drept.
O formulă este un şir de caractere (fără spaţii) care conţine unul sau mai mulţi compuşi chimici separaţi prin caracterul '+'. Fiecare compus chimic poate fi precedat de un număr natural (cu care se va înmulţi întregul compus).
Un compus chimic este constituit din unul sau mai multe elemente chimice, fiecare element fiind eventual urmat de un numar natural (care multiplică doar elementul respectiv).
Un element chimic este un atom (identificat printr-o literă mare sau o literă mare urmată de o literă mică) sau un compus chimic încadrat între paranteze rotunde.
O formulă poate fi plasată în membrul drept al ecuaţiei dacă numărul total de apariţii ale fiecărui atom din membrul stâng coincide cu numărul total de apariţii ale aceluiaşi atom în formula din membrul drept.
Să considerăm formula: C2H5OH+3O2+3(SiO2). În această formulă:
atomul de carbon (C) apare de douã ori;
atomul de hidrogen (H) apare în total de 6 ori (5 + 1);
atomul de oxigen (O) apare în total de 13 ori (1 + 3*2 + 3*2);
atomul de siliciu (Si) apare în total de 3 ori

Cerinţă

Scrieţi un program care să determine care dintre ecuaţiile posibile sunt corecte.

Date de intrare

Fişierul de intrare chimie.in conţine pe prima linie o formulă chimica care constituie membrul stâng al unei ecuaţii. Pe cea de a doua linie este scris un număr natural N care reprezintă numărul de formule chimice ce ur­mează a fi plasate în membrul drept al ecuaţiei. Pe fiecare dintre următoarele N linii este scrisă o formulă chimică.

Date de ieşire

Fişierul de ieşire chimie.out va conţine N linii, câte una pentru fiecare ecuaţie posibilă. Pe linia i va fi scrisă formula chimică din membrul stâng, urmată de == sau !=, apoi de cea de a i-a formulă chimică din lista formulelor pentru membrul drept (aflata pe linia i+2 în fişierul de intrare). Se utilizează == dacă numărul total de apariţii ale fiecărui atom dintr-un membru este egal cu numărul total de apariţii ale aceluiaşi element în formula din celălalt membru, respectiv != în caz contrar. Formulele trebuie să fie scrise exact ca în fişierul de intrare.

Restricţii

  • O ecuaţie are cel mult 100 de caractere.
  • 2 ≤ Numerele cu care se înmultesc atomii/compusii chimici sunt ≤ 10000
  • Dacă un atom nu este urmat de un număr se consideră că el apare o singură dată.
  • Dacă un compus chimic nu este precedat de un număr se contorizează o singura apariţie a sa.
  • 1 ≤ N ≤ 10

Exemplu

>
chimie.in chimie.out
C2H5OH+3O2+3(SiO2)
7
2CO2+3H2O+3SiO2
2C+6H+13O+3Si
99C2H5OH+3SiO2
3SiO4+C2H5OH
C2H5OH+3O2+3(SiO2)+Ge
3(Si(O)2)+2CO+3H2O+O2
2CO+3H2O+3O2+3Si
C2H5OH+3O2+3(SiO2)==2CO2+3H2O+3SiO2
C2H5OH+3O2+3(SiO2)==2C+6H+13O+3Si
C2H5OH+3O2+3(SiO2)!=99C2H5OH+3SiO2
C2H5OH+3O2+3(SiO2)==3SiO4+C2H5OH
C2H5OH+3O2+3(SiO2)!=C2H5OH+3O2+3(SiO2)+Ge
C2H5OH+3O2+3(SiO2)==3(Si(O)2)+2CO+3H2O+O2
C2H5OH+3O2+3(SiO2)!=2CO+3H2O+3O2+3Si
prof. Emanuela Cerchez
Liceul de Informatica "Grigore Moisil" Iasi
propunător: Prof. Emanuela Cerchez
emanuela.cerchez@gmail.com
Articole recomandate
Probleme recomandate
De la Finala .campion 2009: autobuze, mere, circuit, cadou, kpal, sumdif, sarpe, ff
De acelaşi autor: celule, scp, vedete, film, ab, supertri, inginer, camp, sl, detinut, simetric, egal, gropi, ruleta, carti, tgv, uscat, afise, dezbateri, bunici, rv, onu, nspecial, secvop, cadou, reteta, piticot, petrol, checkin, teanc, index, teren, pizza, ecran, drum, text, lbd, aven, spam, pluricex, tren2, gray, pasi, mgo, joc, anagrame, vecini, criptmat, maxim, cutie, party, friends, net, sablon, hd, pc, sir2, aztec, scara, nr, robot2, sah, formule, ed, bilete, hanoig, flood, matrice3, erdos, grup, cd, kfactor, np, cuc, radio, honest, ref, nr01, scor2, convert, auto2, compress, politics, pm, playlist, barbie, firma1, submatrix, ham, pizza1, exam, ants, teatru1, cifre1, bile1, caini, secvreg, pasune, remi, m01, sir23, tren1, joc5, pachete, aedaro, windows, renju, latime, mere1, piloti, peste, pitici, sirag1, stive, turn1, carti1, program1, spioni, kgb, lift, apel, lex, oras, homeless, subsir, dist, harta1, adevar, joc10, bare, zapezi, masina2, perechi1, raft, joc11, joc12, ferma, fni, tunel, lover, pepsi, transport, avion, monkey, premii1, garaj, carti2, tv, pact, fat, cafea, echipe1, secvente, petrom, peg, scara1, lant, ecuatii, stiva, bile4, jungla, rj, poli, text1, compus1, rez, politie, anag, codul, coment, muzeu, seti, basm, timer, secvsir, dp, placa, prod3, bursa, submdisj, sotron1, fazan, secvpar, joker, lego, medalii, cfr, antipatie, figura, links, segm, colorare, brazi, mobil, distsir, guess, greiere, pestera, conferinta, chei, ny, nx, ghinion, sumb, drenaj, telecomanda, grupuri, mahjong, rotund, viena, sport2, cos, monoton, micro, valet, nr0, maxviz, anagramabil, nrpal, lista, dame, consiliu, adprod, arme, deal, prodnr, compar, latin, interviu, vintage, prize, nrdiv, arrows, tdrept, agenda, reziston, vot2, tema, smiley, relatii, ech, scadere, nebuni, castig, expand, wb, prime2, virgule, b210
Despre şiruri de caractere: scp, ab, sl, nrcuv, rv, kpal, reteta, replace, grad, index, cod, text, decript, spam, complex, cifre, anagrame, balbe, criptmat, mesaj, maxim, astre, sablon, formule, ed, balls, vocale, prop, bacan, novel, bitslang, text2, ref, scor2, convert, cod2, compress, pstring, sub, rima, program1, sms, circular, randuri, cezar, bifo, joc9, pal, bare, joc12, fractie, cod3, tunel, csir, top, ratina, cifru1, limbaj, adun, ecuatii, dir, paritate, virus, sir6, mesaj2, text1, sirul, ogorul, rez, sablon1, anag, sir8, seti, secvsir, dp, cuvant, strings, antipatie, fractie1, links, ordonare, text3, concat, codif, cheie, alfabetar, cuvinte2, comp, litere, mxl, mesaj3, expresie2, grad2, antic, zuma, expeval, combcuv, lgdrum, subtitrare, compresie, zigzag, azeval, fraze, subsecvente, showroom, rebus1, agenda, opmult, betisoare, reziston, clase, vot2, ecp, smiley, charlie, cript, scadere, spioni1, sablon3, expand, culori3, virgule
Despre recursivitate: tren, mere, sarpe, soldati, formule, infinit, compress, ploaia, cartoane, sub, metro, windows, lacuri, apel, maxq, pav, joc11, paianjen, suma2, monkey, csir, lsort, imagine, dir, desert, echitabil, rez, logic, gradina, links, dreptunghiuri, expresie1, cumpanit, reziston, antitero, sablon3
Software recomandat
Chestionare recomandate
surse trimise | ajutor