Cod sursa(job #57640)

Utilizator deleted_64d853f2e2bbccbeDELETED deleted_64d853f2e2bbccbe Data 2 mai 2007 19:09:44
Problema Cifra Scor 90
Compilator fpc Status done
Runda Arhiva de probleme Marime 2.14 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-9+1-6+5-6+3-4;
          2: k:=k-9+1-6+5-6+3;
          3: k:=k-9+1-6+5-6;
          4: k:=k-9+1-6+5;
          5: k:=k-9+1-6;
          6: k:=k-9+1;
          7: begin
                  q:=2;
                  for j:=1 to x do
                      if (j mod 2)=0 then q:=((q+10)-5) mod 10
                                     else q:=((q+10)-1) 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-9-1-6-5-6-3+4;
          2: k:=k-9-1-6-5-6-3;
          3: k:=k-9-1-6-5-6;
          4: k:=k-9-1-6-5;
          5: k:=k-9-1-6;
          6: k:=k-9-1;
          7: begin
                  q:=2;
                  for j:=1 to x do
                      if (j mod 2)=0 then q:=((q+10)-5) mod 10
                                     else q:=((q+10)-1) 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+10)-3) 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.