Cod sursa(job #2595814)

Utilizator alex_benescuAlex Ben alex_benescu Data 8 aprilie 2020 14:20:49
Problema Descompuneri Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.69 kb
#include<fstream>
#include<algorithm>
#define DN 3001
using namespace std;
long long n,k,d[DN];
int a[DN][DN];
int main(){
ifstream f("desc.in");
ofstream g("desc.out");
f>>n>>k;
long long p=0,i,j,r;
d[0]=1;
for(i=2; i*i<n; ++i) if(0==n%i){
d[++p]=i;
d[++p]=n/i;
}
if(i*i==n) d[++p]=i;
d[++p]=n;
sort(d+1, d+(++p));
for(i=1; i<p; ++i) a[0][i]=1;
for(i=1; i<p; ++i){
r=0;
for(j=p-1; 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';
j=1;
for(i=p-1; i;){
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;
}