Pagini recente » Cod sursa (job #657953) | Cod sursa (job #1532344) | Cod sursa (job #2023506) | Cod sursa (job #2819564) | Cod sursa (job #1882960)
#include <algorithm>
#include <fstream>
using namespace std;
ifstream fin("desc.in");
ofstream fout("desc.out");
typedef long long i64;
const int divmax= 6730;
i64 v[divmax+1];
int d[divmax+1][divmax+1];
int main( ) {
i64 n, nr= 1;
int k, nd= 0;
fin>>n>>k;
for ( int i= 2; (i64)i*i<=n; ++i ) {
if ( n%i==0 ) {
v[++nd]= i;
if ( (i64)i*i!=n ) {
v[++nd]= n/i;
}
}
}
v[++nd]= n;
sort( v+1, v+nd+1 );
for ( int i= 1; i<=nd; ++i ) {
d[i][i]= 1;
for ( int j= i-1, l= 1; j>=1; --j ) {
d[i][j]= d[i][j+1];
if ( v[i]%v[j]==0 ) {
for ( i64 aux= v[i]/v[j]; aux>v[l]; ++l ) ;
d[i][j]+= d[l][j];
}
}
}
fout<<d[nd][1]<<"\n";
for ( int i= nd, j= 1; nr<n; ) {
for ( ; d[i][j]-d[i][j+1]<k; k= k-(d[i][j]-d[i][j+1]), ++j ) ;
fout<<v[j]<<" ";
nr*= v[j];
for ( i64 aux= v[i]/v[j]; aux<v[i]; --i ) ;
}
fout<<"\n";
return 0;
}