Cod sursa(job #323364)

Utilizator cristi12345Balu Cristian cristi12345 Data 11 iunie 2009 21:59:19
Problema Cifra Scor 90
Compilator fpc Status done
Runda Arhiva de probleme Marime 1.76 kb
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.