Pagini recente » Cod sursa (job #1774377) | Cod sursa (job #642842) | Cod sursa (job #145175) | Cod sursa (job #1513257) | Cod sursa (job #1893389)
#include <bits/stdc++.h>
using namespace std;
ifstream f("desc.in");
ofstream g("desc.out");
int n,k,i,j,N,dp[3000][3000];
long long v[3000];
map<long long,int> M;
void afis(int N,int x,int d)
{
if(N==1) return;
for(;dp[N][d]-dp[N][d+1]<x;++d) x-=(dp[N][d]-dp[N][d+1]);
g<<v[d]<<'\n';
afis(M[v[N]/v[d]],x,d);
}
int main()
{
f>>n>>k;
for(i=1;1LL*i*i<n;++i)
if(n%i==0) v[++N]=i,v[++N]=n/i;
if(n%i==0) v[++N]=i;
sort(v+1,v+N+1);
for(i=1;i<=N;++i) M[v[i]]=i;
for(j=N;j;--j)
{
dp[j][j]=1;
for(i=j+1;i<=N;++i)
{
dp[i][j]=dp[i][j+1];
if(v[i]%v[j]==0&&v[i]/v[j]>=v[j]) dp[i][j]+=dp[M[v[i]/v[j]]][j];
}
}
g<<dp[N][2]<<'\n';
afis(N,k,2);
return 0;
}