MMASS - Mass of Molecule
Tác giả: flashmt
Ngôn ngữ: Pascal
const m:array[1..3] of integer=(1,12,16);
var a:string;
d:array[1..100] of integer;
dau:array[1..100] of byte;
re:integer;
procedure rf;
begin
read(a);
end;
function mass(c:char):integer;
begin
case c of
'H':mass:=1;
'C':mass:=12;
'O':mass:=16;
end
end;
procedure pr;
var i,j,t,l,k:byte; code:integer;
begin
fillchar(dau,sizeof(dau),0);
l:=length(a); re:=0;
for i:=1 to l do d[i]:=1;
for i:=1 to l do
if a[i]=')' then
begin
for j:=i-2 downto 1 do
if (a[j]='(') and (dau[j]=0) then
begin
dau[j]:=1;
if (ord(a[i+1])>=50) and (ord(a[i+1])<=57) then
begin
val(a[i+1],t,code);
for k:=j+1 to i-1 do
d[k]:=d[k]*t;
end;
break;
end;
end
else
begin
if (ord(a[i])>=50) and (ord(a[i])<=57) then
begin
val(a[i],t,code);
d[i-1]:=d[i-1]*t;
end;
end;
for i:=1 to l do
if (a[i]='C') or (a[i]='H') or (a[i]='O') then
re:=re+mass(a[i])*d[i];
end;
procedure wf;
begin
write(re);
end;
begin
rf;
pr;
wf;
end.