Pagini recente » Cod sursa (job #1931111) | Borderou de evaluare (job #2115280) | Cod sursa (job #350642) | Cod sursa (job #2973660) | Cod sursa (job #2527459)
#include<bits/stdc++.h>
using namespace std;
ifstream fin("nummst.in");
ofstream fout("nummst.out");
int n,d,sum,k,i,j,h,poz;
bool f[100000],r[10000];
int q[10000],t[10000];
unsigned long long s[10000],el,aux;
int main()
{
fin>>n;
for(i=2;i<=n;i++) if(n%i==0) break;d=i;sum=d;
for(i=2;i<sum;i++) if(f[i]==0)
{
q[++k]=i;
for(j=i+i;j<=sum;j+=i) f[j]=1;
}
r[0]=1;s[0]=1;
for(i=1;i<=k;i++)
for(j=sum;j>=0;j--)
for(h=q[i];h+j<=sum;h*=q[i]) if(r[j])
{
poz=j+h;r[poz]=1;
aux=s[j]*h;
if(aux>s[poz])
{
s[poz]=aux;
t[poz]=j;
}
}
int maxi=0;poz=0;
for(i=sum;i>=1;i--)
{
if(maxi<s[i])
maxi=s[i],poz=i;
}
//fout<<poz<<"\n";
if(poz!=0)
{
aux=maxi;
while(aux!=0)
{
el=1;
//fout<<aux<<" "<<t[aux]<<"\n";
for(i=1;i<=aux-t[aux];i++) el*=n/sum;
aux=t[aux];
fout<<el<<" ";
}
}
for(poz++;poz<=sum;poz++) fout<<n/sum<<" ";
return 0;
}