Cod sursa(job #57646)

Utilizator deleted_64d853f2e2bbccbeDELETED deleted_64d853f2e2bbccbe Data 2 mai 2007 19:20:57
Problema Cifra Scor 90
Compilator fpc Status done
Runda Arhiva de probleme Marime 2.04 kb
program radu;
var n,t,j,r,x,y,m,q,sem,i,k:longint;
    f,g:text;
    cif1,cif2:char;
    cod:integer;

procedure par(y:longint);
begin
     k:=k+40;
     case y of
          1: k:=k-16;
          2: k:=k-12;
          3: k:=k-15;
          4: k:=k-9;
          5: k:=k-14;
          6: k:=k-8;
          7: begin
                  q:=2;
                  for j:=1 to x do
                      if (j mod 2)=0 then q:=(q+5) mod 10
                                     else q:=(q+9) mod 10;
                      k:=q;
                      end;
          8: k:=k-9;
          9: k:=k;
          0: k:=k+3;
          end;
     k:=k mod 10;
     writeln (g,k);
end;

procedure impar(y:longint);
begin
     k:=k+40;
     case y of
          1: k:=k-26;
          2: k:=k-30;
          3: k:=k-27;
          4: k:=k-21;
          5: k:=k-16;
          6: k:=k-10;
          7: begin
                  q:=2;
                  for j:=1 to x do
                      if (j mod 2)=0 then q:=(q+5) mod 10
                                     else q:=(q+9) mod 10;
                  k:=q;
                  end;
          8: k:=k-9;
          0: k:=k+3;
          else k:=k;
          end;
     k:=k mod 10;
     writeln (g,k);
end;

begin
     assign (f,'cifra.in');
     reset (f);
     assign (g,'cifra.out');
     rewrite (g);
     read(f,t);
     readln(f);
     for r:=1 to t do
         begin
              cif1:='0';
              cif2:='0';
              while not eoln(f) do
                    begin
                         cif1:=cif2;
                         read (f,cif2);
                    end;
              readln(f);
              val(cif1,n,cod);
              val(cif2,m,cod);
              n:=n*10+m;
              x:=n div 10;
              k:=7;
              for i:=1 to x do
                  k:=(k+7) mod 10;
              y:=n mod 10;
              sem:=x mod 2;
              if sem=0 then par(y)
                       else impar(y);
         end;
     close (f);
     close (g);
end.