Pagini recente » Cod sursa (job #819741) | Cod sursa (job #942224) | Cod sursa (job #3170197) | Cod sursa (job #664317) | Cod sursa (job #573810)
Cod sursa(job #573810)
#include <algorithm>
using namespace std;
#define DIM 1005
long long dvz[DIM];
int bst[DIM][DIM];
long long N;
int K,M;
void init ()
{
long long i;
scanf ("%lld%d",&N,&K);
for (i=2; i*i<N; ++i)
if (N%i==0)
{
dvz[++M]=i;
dvz[++M]=N/i;
}
if (i*i==N)
dvz[++M]=i;
dvz[0]=1; dvz[++M]=N;
sort (dvz,dvz+M+1);
}
void solve ()
{
int i,j,k;
for (i=1; i<=M; ++i)
bst[0][i]=1;
for (i=1; i<=M; ++i)
{
k=0;
for (j=M; j>=1; --j)
{
bst[i][j]=bst[i][j+1];
if (dvz[i]%dvz[j]==0)
{
for ( ; dvz[k]<dvz[i]/dvz[j] && k<=M; ++k);
bst[i][j]+=bst[k][j];
}
}
}
}
void print ()
{
int i,j,k;
printf ("%d\n",bst[M][1]);
j=1;
for (i=M; i>=1; )
{
for (k=M; j<=M; ++j)
if (dvz[i]%dvz[j]==0)
{
for ( ; dvz[k]>dvz[i]/dvz[j] && k>=1; --k);
if (bst[k][j]<K)
K-=bst[k][j];
else
{
printf ("%lld ",dvz[j]);
i=k;
break ;
}
}
}
}
int main ()
{
freopen ("desc.in","r",stdin);
freopen ("desc.out","w",stdout);
init ();
solve ();
print ();
return 0;
}