Cod sursa(job #97507)

Utilizator RobybrasovRobert Hangu Robybrasov Data 7 noiembrie 2007 11:05:29
Problema Cifra Scor 90
Compilator fpc Status done
Runda Arhiva de probleme Marime 1.09 kb
var a:array[0..9,0..3] of byte;
    s:string;
    f,g:text;

procedure init;
var i:byte;
begin
  for i:=0 to 3 do begin a[0,i]:=0; a[1,i]:=1; end;
  a[2,0]:=6; a[2,1]:=2; a[2,2]:=4; a[2,3]:=8;
  a[3,0]:=1; a[3,1]:=3; a[3,2]:=9; a[3,3]:=7;
  a[4,0]:=6; a[4,1]:=4; a[4,2]:=6; a[4,3]:=4;
  for i:=0 to 3 do begin a[5,i]:=5; a[6,i]:=6; end;
  a[7,0]:=1; a[7,1]:=7; a[7,2]:=9; a[7,3]:=3;
  a[8,0]:=6; a[8,1]:=8; a[8,2]:=4; a[8,3]:=2;
  a[9,0]:=1; a[9,1]:=9; a[9,2]:=1; a[9,3]:=9;
end;

function ucif(k:integer):integer;
var s,i:integer;
begin
  s:=0;
  for i:=1 to k do
    begin
      inc(s,a[i mod 10,i mod 4]);
{      if s>10 then s:=s mod 10;}
    end;
  ucif:=s mod 10;
end;

procedure rezolva;
var p,i,j,nr,c,n,t:integer;
    s1:string;
begin
  assign(f,'cifra.in');
  reset(f);
  assign(g,'cifra.out');
  rewrite(g);
  readln(f,t);
  for i:=1 to t do
    begin
      readln(f,s);
      p:=length(s)-1;
      if p<1 then p:=1;
      s1:=copy(s,p,2);
      val(s1,n,c);
      writeln(g,ucif(n));
    end;
  close(f);
  close(g);
end;

begin
  init;
  rezolva;
end.