Concursul "Urmasii lui Moisil" 2002 Clasa a X-a |
Problema 2 - Masa
O molecula poate fi definita ca o secventa de atomi si poate fi reprezentata
printr-o formula chimica. De exemplu, litera H desemneaza un atom de hidrogen,
litera C desemneaza un atom de carbon, O desemneaza un atom de oxigen. Formula
COOH reprezinta molecula formata dintr-un atom de carbon, doi atomi de oxigen
si un atom de hidrogen.
Pentru a scrie formule în mod eficient utilizam urmatoarele reguli.
Literele ce desemneaza unii atomi pot fi grupate între paranteze. De exemplu
formula CH(OH) contine gruparea OH. Gruparile pot fi imbricate, adica o grupare
poate contine alte grupari. Pentru a simplifica formula, aparitii consecutive
ale aceleiasi litere pot fi înlocuite cu litera respectiva urmata de numarul
de aparitii. De exemplu, formula COOHHH poate fi scrisa CO2H3 si reprezinta
o molecula constituita dintr-un atom de carbon, doi atomi de oxigen si 3 atomi
de hidrogen.
De asemenea, aparitiile consecutive ale aceleiasi grupari pot fi înlocuite
de gruparea respectiva, urmata de numarul ei de aparitii. De exemplu, formula
CH(CO2H)(CO2H)(CO2H) poate fi scrisa CH(CO2H)3. Molecula reprezentata de aceasta
formula consta din 4 atomi de carbon, 4 atomi de hidrogen si 6 atomi de oxigen.
Masa unei molecule este egala cu suma maselor atomilor din care este constituita.
Cerinta
Scrieti un program care citeste o formula chimica în care intervin numai
atomi de hidrogen, oxigen si carbon si calculeaza masa moleculei reprezentate
de formula respectiva.
Date de intrare
Fisierul de intrare MASA.IN contine pe prima linie o formula chimica construita
dupa regulile de mai sus.
Date de iesire
Pe prima linie a fisierului de iesire MASA.OUT va aparea masa moleculei descrisa
de formula data.
Restrictii si precizari
- Lungimea unei formule nu depaseste 100 de caractere.
- Masa unei molecule este un numar natural ce nu depaseste 10000.
- Un atom de hidrogen are masa 1, un atom de carbon are masa 12, iar un atom
de oxigen are masa 16.
- Numarul care indica repetitiile unei litere sau ale unei grupari este întotdeauna
mai mare decât 1 si mai mic strict decât 10.
Exemple
MASA.IN | MASA.OUT |
COOH | 45 |
MASA.IN | MASA.OUT |
CH(CO2H)3 | 148 |
MASA.IN | MASA.OUT |
((CH)2(OH2H)(C(H))O)3 | 222 |
Timp maxim de executie: 1 secunda/test