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.

Download