Cod sursa(job #968569)

Utilizator geniucosOncescu Costin geniucos Data 2 iulie 2013 12:27:44
Problema NumMst Scor 24
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.88 kb
#include<cstdio>
#include<vector>
#include<algorithm>
using namespace std;
int n,i,j,cmmdc;
char cr[5000003];
vector < int > v;
vector < int > ::iterator it;
int main()
{
freopen("nummst.in","r",stdin);
freopen("nummst.out","w",stdout);
scanf("%d",&n);
for(i=2;i*i<=n;i++)
if(n%i==0)
{
    if(n/i>cmmdc) cmmdc=n/i;
    if(i>cmmdc) cmmdc=i;
}
n/=cmmdc;
if(n==2)
{
    printf("%d %d\n",cmmdc,cmmdc);
    return 0;
}
if(n==3)
{
    printf("%d %d\n",cmmdc,2*cmmdc);
    return 0;
}
if(n==4)
{
    printf("%d %d\n",cmmdc,3*cmmdc);
    return 0;
}
for(i=2;i*i<=n;i++)
    if(cr[i]==0)
    {
        for(j=i*i;j<=n;j+=i)
            cr[j]=1;
    }
for(i=2;i<=n;i++)
    if(cr[i]==0)
    {
        v.push_back(i);
        n-=i;
    }
if(n) v.push_back(n);
sort(v.begin(),v.end());
for(it=v.begin();it!=v.end();it++)
    printf("%d ",*it*cmmdc);
return 0;
}