Cod sursa(job #2542)

Utilizator don_alexeyDON Alexey don_alexey Data 17 decembrie 2006 18:22:32
Problema Factorial Scor 100
Compilator fpc Status done
Runda Arhiva de probleme Marime 1.21 kb
program fact;
var
        f:text;
        n,x,j,nr0,copie,i,a,b,mij:longint;

function cati0(x:longint):longint;
var
        putere,suma:longint;
begin
        putere:=5;
        suma:=0;
        while putere<=x do begin
                suma:=suma+x div putere;
                putere:=putere*5;
        end;
        cati0:=suma;
end;

begin
        assign(f,'fact.in');
        reset(f);
        readln(f,n);
        close(f);
        a:=5;
        b:=400000015;
        if n=0 then mij:=1 else begin
        while abs(b-a)>5 do begin
                mij:=(a+b) div 2;
                if ((mij mod 10 >0) and (mij mod 10<5)) then mij:=mij-mij mod 10
                else if mij mod 10 > 6 then mij:=mij-mij mod 10 + 5;
                if cati0(mij)>n then
                        b:=mij-5
                else a:=mij;
        end;
        a:=a div 5;
        b:=b div 5;
        for i:=a to b do
                if cati0(i*5)=n then begin
                        break;
                end;
        end;
        assign(f,'fact.out');
        rewrite(f);
        if n=0 then writeln(f,1)
        else if cati0(i*5)=n then writeln(f,i*5)
        else writeln(f,-1);
        close(f);
end.