Pagini recente » Cod sursa (job #814685) | Cod sursa (job #516702) | Cod sursa (job #2777795) | Cod sursa (job #784208) | Cod sursa (job #495719)
Cod sursa(job #495719)
#include<stdio.h>
#include<algorithm>
using namespace std;
#define ll long long
int nr,k,dvz;
ll v[3006],n;
int d[3005][3005];
int main ()
{
int i,j,ind;
ll val = 0;
freopen("desc.in","r",stdin);
freopen("desc.out","w",stdout);
scanf("%lld%d",&n,&k);
for(i=1;(ll)i*i<=n;i++)
if(n%i==0)
{
v[nr++]=i;
if(i!=n/i)
v[nr++]=n/i;
}
--nr;
sort(v+1,v+nr+1);
for(i=nr;i>=1;i--)
for(j=1,ind=1;j<=nr;j++)
{
d[i][j]=d[i+1][j];
if(i==j)
d[i][j]++;
else
if(v[j]%v[i]==0)
{
while(v[ind]<v[j]/v[i])
ind++;
d[i][j]+=d[i][ind];
}
}
printf("%d\n",d[1][nr]);
dvz=nr;i=1;
for(;dvz >= 1;)
{
for(;i<=nr && d[i][dvz]-d[i+1][dvz]<k;i++)
k-=d[i][dvz]-d[i+1][dvz];
val=v[dvz]/v[i];
while(dvz>=1 && val<v[dvz])
dvz--;
printf("%lld ",v[i]);
}
printf("\n");
return 0;
}