Pagini recente » Cod sursa (job #1659132) | Cod sursa (job #571501)
Cod sursa(job #571501)
#include <iostream>
#include <fstream>
#include <vector>
#include <algorithm>
#define DN 3005
using namespace std;
typedef vector<int>::iterator it;
int a[DN][DN],k;
long long n;
vector<int> d;
int main()
{
ifstream f("desc.in");
ofstream g("desc.out");
f>>n>>k;
int i;
d.push_back(1);
for(i=2; i*i<n; ++i) if(0==n%i) {
d.push_back(i);
d.push_back(n/i);
}
if(i*i==n) d.push_back(i);
d.push_back(n);
sort(d.begin(), d.end());
int p=d.size();
for(int i=1; i<p; ++i) a[0][i]=1;
for(i=1; i<p; ++i) {
int r=0;
for(int j=p-1; 0<j; --j) {
a[i][j]=a[i][j+1];
if(0==d[i]%d[j]) {
for(;d[r]<d[i]/d[j];++r);
a[i][j]+=a[r][j];
}
}
}
g<<a[p-1][1]<<'\n';
int j=1;
for(i=p-1; 0<i;) {
int r=p-1;
for(;j<p; ++j) if(0==d[i]%d[j]) {
for(;d[r]>d[i]/d[j];--r);
if(a[r][j]<k) k-=a[r][j];
else {
g<<d[j]<<' ';
i=r;
break;
}
}
}
return 0;
}