Pagini recente » Borderou de evaluare (job #2443216) | Borderou de evaluare (job #432014) | Borderou de evaluare (job #3231567) | Cod sursa (job #1411198) | Cod sursa (job #204194)
Cod sursa(job #204194)
var v,l:array[0..1000]of longint;
m:array[0..1000,1..1000]of longint;
n,i,j,k,p,r,o:longint;
f:text;
begin
assign(f,'desc.in');
reset(f);
read(f,n,k);
close(f);
for i:=1 to trunc(sqrt(n))do
if(n mod i=0)then begin p:=p+1;
v[p]:=i;
l[p]:=n div i;
end;
if v[p]=l[p] then r:=1;
for i:=1 to p do
v[2*p-i+1-r]:=l[i];
p:=p*2-r;
for i:=1 to p do
v[i-1]:=v[i];
p:=p-1;
for i:=1 to p do
m[0,i]:=1;
for i:=1 to p do
begin
r:=0;
for j:=p downto 1 do
begin
m[i,j]:=m[i,j+1];
if v[i] mod v[j]=0 then begin while v[r]<>v[i] div v[j] do
r:=r+1;
m[i,j]:=m[i,j]+m[r,j];
end;
end;
end;
r:=p;
j:=1;
assign(f,'desc.out');
rewrite(f);
writeln(f,m[p,1]);
i:=p;
while(k>0)and(r>0)do
begin
while v[r] mod v[j]>0 do
j:=j+1;
while v[i]<>v[r] div v[j] do
i:=i-1;
if m[i,j]<k then begin k:=k-m[i,j];
j:=j+1;
end
else begin write(f,v[j],' ');
r:=i;
end;
end;
writeln(f);
close(f);
end.