Cod sursa(job #6319)

Utilizator vanila0406Ionescu Victor vanila0406 Data 18 ianuarie 2007 20:23:37
Problema GFact Scor 80
Compilator fpc Status done
Runda Arhiva de probleme Marime 1.91 kb
program gfact;
var p,q:longint;
        f,g:text;
        divizor,putere:longint;

function prim(x:longint):boolean;
var d:longint;
begin
        if x in [0..1] then begin
                prim:=false;
                exit;
                end;
        prim:=true;
        for d:=2 to trunc(sqrt(x)) do
                if x mod d=0 then
                        begin
                                prim:=false;
                                exit;
                        end;
end;

procedure iofile;
var d,e:longint;
begin
        assign(f,'gfact.in');
        reset(f);
        assign(g,'gfact.out');
        rewrite(g);
        readln(f,p,q);
        d:=2;
        while p<>1 do
                begin
                        e:=0;        {if d>200 then
                        if prim(p) then
                                d:=p;}

                        while p mod d=0 do
                                begin
                                        p:=p div d;
                                        inc(e);
                                end;
                        inc(d);
                end;
        divizor:=d-1;
        putere:=e*q;
        close(f);
end;





procedure prel;
var i:longint;
        put,x,d,diviz:longint;
begin
        put:=0;
        i:=0;
        x:=1;
        diviz:=1;
        while x<=putere do
                begin
                x:=x*divizor+1;
                diviz:=diviz*divizor;
                end;
        x:=(x-1)div divizor;
        diviz:=diviz div divizor;
        while putere>0 do
                begin
                        i:=i+(putere div x)*diviz;
                        putere:=putere mod x;
                        x:=(x-1)div divizor;
                        diviz:=diviz div divizor;
                end;
        writeln(g,i*divizor);
        close(g);

end;



begin
        iofile;
        prel;
end.