Pagini recente » Cod sursa (job #2501978) | Cod sursa (job #233296) | Cod sursa (job #993015) | Cod sursa (job #2809431) | Cod sursa (job #2206536)
#include<fstream>
#include<algorithm>
using namespace std;
ifstream fi("descompuneri.in");
ofstream fo("descompuneri.out");
long long n,D[1005];
long long nrd,k,i,j,ind,Dp[1005][1005],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;
}