Pagini recente » Cod sursa (job #351437) | Cod sursa (job #896003) | Cod sursa (job #549670) | Cod sursa (job #2105639) | Cod sursa (job #308643)
Cod sursa(job #308643)
{ http://infoarena.ro/problema/cifra }
var f,g:text;
s:string[100];
n:int64;
i,t:integer;
e:shortint;
v:array[0..99] of byte;
{ Functie pentru determinarea ultimei cifre a lui n^p }
function putereuc(n,p:int64):int64;
var a:int64;
begin
if p=0 then putereuc:=1
else if p=1 then putereuc:=n mod 10
else begin
a:=putereuc(n,p div 2);
a:=a*a mod 10;
if odd(p) then a:=a*n mod 10;
putereuc:=a;
end;
end;
{ ----- Sfarsit functie ----- }
{ Functie pentru determinarea ultimei cifre a sumei S de la i=1 la n din i^i }
function sumauc(n:int64):int64;
var s,i:int64;
begin
s:=0; i:=1;
while i<=n do
begin
s:=s+putereuc(i mod 10,i);
i:=i+1;
end;
s:=s mod 10;
sumauc:=s;
end;
{ ----- Sfarsit functie ----- }
begin
assign(f,'cifra.in'); reset(f);
assign(g,'cifra.out'); rewrite(g);
readln(f,t);
{ Se observa ca numerele se repeta din 100 in 100 }
for i:=0 to 99 do
v[i]:=sumauc(i);
{ ----- Sfarsit atribuire valori vectorului v de la 0 la 99 ----- }
{ De la valorile mari ne trebuie doar ultimele 2 cifre, asadar le
citim intr-un string de maxim 100 caractere si selectam ultimele
2 cifre }
for i:=1 to t do
begin
readln(f,s);
val(copy(s,length(s)-1,2),n,e);
writeln(g,v[n]);
end;
{ ----- Sfarsit ----- }
close(f); close(g);
end.