Cod sursa(job #5321)

Utilizator vanila0406Ionescu Victor vanila0406 Data 11 ianuarie 2007 21:23:14
Problema GFact Scor 15
Compilator fpc Status done
Runda Arhiva de probleme Marime 1.96 kb
program gfact;
var p,q:longint;
        v:array[1..1000] of longint;
        nr:array[1..1000] of longint;
        v1:array[1..1000] of longint;
        f,g:text;
        k:integer;



procedure iofile;
var d,e:longint;
begin
fillchar(nr,sizeof(nr),0);
        assign(f,'gfact.in');
        reset(f);
        assign(g,'gfact.out');
        rewrite(g);
        readln(f,p,q);
        d:=2;
        k:=0;
        while p<>1 do
                begin
                        e:=0;
                        while p mod d=0 do
                                begin
                                p:=p div d;
                                inc(e);
                                end;
                        if e<>0 then
                                begin
                        inc(k);
                        v[k]:=d;
                        nr[k]:=e*q;
                        inc(d);  end;
                end;
        close(f);
end;




function ok:boolean;
var i:longint;
begin
        ok:=true;
        for i:=1 to k do
                if v1[i]<nr[i] then
                        begin
                                ok:=false;
                                exit;
                        end;
end;




procedure prel;
var j,nb:longint;
        x,i,y:longint;
begin
        i:=2;
        repeat
                for j:=1 to k do
                        begin
                                x:=i;
                                nb:=0;
                                y:=v[j];
                                while x mod y=0 do
                                begin
                                        x:=x div v[j];
                                        inc(nb);
                                end;
                                v1[j]:=v1[j]+nb;
                        end;
                inc(i);
        until ok;
        writeln(g,i-1);
        close(g);
end;


begin
        iofile;
        prel;
end.