Pagini recente » Cod sursa (job #1090892) | Cod sursa (job #2595532) | Cod sursa (job #1973391) | Cod sursa (job #1698346) | Cod sursa (job #2206539)
#include<fstream>
#include<algorithm>
using namespace std;
ifstream fi("desc.in");
ofstream fo("desc.out");
long long n,D[5005];
int nrd,k,i,j,ind,Dp[5005][5005],x,y;
int main()
{
fi>>n>>k;
for(i=2; 1LL*i*i<=n; i++)
{
if(n%i==0)
{
D[++nrd]=i;
if(i!=n/i)
D[++nrd]=n/i;
}
}
D[0]=1;
sort(D+1,D+nrd+1);
D[++nrd]=n;
for(i=1; i<=nrd; i++)
Dp[0][i]=1;
for(i=1; i<=nrd; i++)
{
ind=0;
for(j=nrd; j>=1; j--)
{
Dp[i][j]=Dp[i][j+1];
if(D[i]%D[j]==0)
{
while(D[ind+1]<=D[i]/D[j])
ind++;
Dp[i][j]+=Dp[ind][j];
}
}
}
fo<<Dp[nrd][1]<<"\n";
x=nrd;
y=1;
while(n>1)
{
while(k>Dp[x][y]-Dp[x][y+1])
{
k=k-(Dp[x][y]-Dp[x][y+1]);
y++;
}
fo<<D[y]<<" ";
n/=D[y];
while(D[x]>n)
x--;
}
fi.close();
fo.close();
return 0;
}