Cod sursa(job #1026106)

Utilizator hungntnktpHungntnktp hungntnktp Data 11 noiembrie 2013 09:07:47
Problema Invers Scor 0
Compilator fpc Status done
Runda Arhiva de probleme Marime 1.99 kb
CONST
        tfi     ='invers.in';
        tfo     ='invers.out';
VAR
        fi,fo   :text;
        s       :string;
        t       :longint;
 (************************************************************************)
Procedure lam;
      Var
        i,u,v,x,y,nho,k:longint;
        dd      :boolean;
      Begin
        if length(s)=1 then
          begin
            val(s,x);
            if x mod 2=0 then writeln(fo,'Yes') else writeln(fo,'No');
            exit;
          end;
        u:=1;v:=length(s);nho:=0;k:=0; dd:=true;
        while u<=v do
          begin
            x:=ord(s[u])-48;
            y:=(ord(s[v])-48-nho+10) mod 10;
            nho:=k;
            if (x-y+10) mod 10=0 then k:=0 else if (x-y+10) mod 10=1 then k:=1
            else
              begin
                dd:=false;
                break;
              end;
            if (u=v) and (y mod 2=1) then dd:=false;
            inc(u);
            dec(v);
          end;
        if (s[1]='1') and (dd=false) then
          begin
            u:=2;v:=length(s);nho:=0;k:=1;dd:=true;
            while u<=v do
              begin
                x:=ord(s[u])-48;
                y:=(ord(s[v])-48-nho+10) mod 10;
                nho:=k;
                if (x-y+10) mod 10=0 then k:=0 else if (x-y+10) mod 10=1 then k:=1
                else
                  begin
                    dd:=false;
                    break;
                  end;
                if (u=v) and (y mod 2=1) then dd:=false;
                inc(u);
                dec(v);
              end;
          end;
        if dd then writeln(fo,'DA') else writeln(fo,'NU');
      End;
 (***********************************************************************)
BEGIN
      assign(fi,tfi);reset(fi);
      assign(fo,tfo);rewrite(fo);
        readln(fi,t);
        while t<>0 do
          begin
            readln(fi,s);
            lam;
            dec(t);
          end;
      close(fi);
      close(fo);
END.