Cod sursa(job #5321)
Utilizator | 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.