Cod sursa(job #52360)

Utilizator PintaFlorinPinta Petru Florin PintaFlorin Data 18 aprilie 2007 19:01:41
Problema Cifra Scor 0
Compilator fpc Status done
Runda Arhiva de probleme Marime 1.06 kb
Program cifra;
var f,g:text;
    a:array [0..9,0..3] of byte;
    v:array [0..9] of byte;
    n,t:longint;

Procedure init;
var i,j:byte;
begin
v[0]:=1; a[0,0]:=0;
v[1]:=1; a[1,0]:=1;
v[2]:=4; a[2,1]:=2; a[2,2]:=4; a[2,3]:=8; a[2,0]:=6;
v[3]:=4; a[3,1]:=3; a[3,2]:=9; a[3,3]:=7; a[3,0]:=1;
v[4]:=2; a[4,1]:=4; a[4,0]:=6;
v[5]:=1; a[5,0]:=5;
v[6]:=1; a[6,0]:=6;
v[7]:=4; a[7,1]:=7; a[7,2]:=9; a[7,3]:=3; a[7,0]:=1;
v[8]:=4; a[8,1]:=8; a[8,2]:=4; a[8,3]:=2; a[8,0]:=6;
v[9]:=2; a[9,1]:=9; a[9,0]:=1;
end;

Function ultima(n:longint):longint;
var i,u1,u2,cifra:longint;
begin
cifra:=0;
for i:=1 to n do begin
u1:=i mod 10;
u2:=i mod 100;
cifra:=cifra+a[u1,u2 mod v[u1]];
end;
cifra:=cifra mod 10;
ultima:=cifra;
end;

Procedure citire;
var i,ul,nr:longint;
    s,c:string; e:integer;
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);
c:=copy (s,length(s)-2,2);
val(c,nr,e);
ul:=ultima(nr);
writeln(g,ul);
end;
close(f);
close(g);
end;

begin
init;
citire;
end.