Pagini recente » Cod sursa (job #2178654) | Cod sursa (job #1528125) | Cod sursa (job #1959736) | Cod sursa (job #2141700) | Cod sursa (job #204934)
Cod sursa(job #204934)
#include<fstream.h>
int n;
long a[1001],m[1001],min,vmax;
char v[50001];
ofstream fout("economie.out");
void citire()
{
ifstream fin("economie.in");
int i;
fin>>n;
for(i=1;i<=n;i++)
fin>>a[i];
fin.close();
}
int divide(int p, int q)
{
int st,dr,x;
st=p, dr=q, x=a[p];
while(st<dr)
{
while(st<dr && a[dr]>=x) dr--;
a[st]=a[dr];
while(st<dr && a[st]<=x) st++;
a[dr]=a[st];
}
a[st]=x;
return st;
}
void ord(int p, int q)
{
int mij;
mij=divide(p,q);
if(mij-1>p) ord(p,mij-1);
if(mij+1<q) ord(mij+1,q);
}
void afis()
{
int i;
fout<<min<<'\n';
for(i=1;i<=min;i++)
fout<<m[i]<<'\n';
fout.close();
}
void numara()
{
int i,j,ok;
if(a[1]==1)
{
fout<<"1"<<'\n';
fout<<"1"<<'\n';
fout.close();
}
else
{
m[++min]=a[1];
v[a[1]]=1;
vmax=a[n];
for(i=2*m[min];i<=vmax;i+=m[min])
v[i]=1;
for(i=2;i<=n;i++)
{
if(!v[a[i]])
{
m[++min]=a[i], v[a[i]]=1;
ok=1;
for(j=a[1];j<=vmax && ok;j++)
if(v[j] && a[j]%m[min]!=0)
if(j+m[min]>vmax) ok=0;
else v[j+m[min]]=1;
}
}
afis();
}
}
int main()
{
citire();
ord(1,n);
numara();
return 0;
}