Pagini recente » Cod sursa (job #2877777) | Cod sursa (job #2780067) | Cod sursa (job #1854291) | Cod sursa (job #2733868) | Cod sursa (job #179767)
Cod sursa(job #179767)
#include <stdio.h>
FILE *f,*g;
long a[1005],n,i,b[1005],max;
char c[200000];
long divide(long ls,long ld)
{
long s=ls,d=ld,aux;
aux=a[ls];
while(s<d)
{
while((s<d)&&(a[d]>aux))d--;
a[s]=a[d];
while((s<d)&&(a[s]<=aux))s++;
a[d]=a[s];
}
a[s]=aux;
return s;
}
void quick(long ls,long ld)
{
long k;
if(ls<ld)
{
k=divide(ls,ld);
quick(ls,k-1);
quick(k+1,ld);
}
}
void genereaza(void)
{
long i;
for(i=a[1];i<=max;i+=a[1])
c[i]=1;
}
void actualizeaza(long pas)
{
long i,j;
c[pas]=1;
for(i=1;i<=max;i++)
if(c[i]==1)
c[i+pas]=1;
}
void afiseaza(void)
{
long i;
fprintf(g,"%ld\n",b[0]);
for(i=1;i<=b[0];i++)
fprintf(g,"%ld\n",b[i]);
}
int main()
{
f=fopen("economie.in","r");
g=fopen("economie.out","w");
fscanf(f,"%ld\n",&n);
for(i=1;i<=n;i++) fscanf(f,"%ld\n",&a[i]);
quick(1,n);
b[0]++;
b[b[0]]=a[1];
i=2;
max=a[n];
genereaza();
while(i<=n)
{
if(c[a[i]]!=1)
{
b[0]++;
b[b[0]]=a[i];
actualizeaza(a[i]);
}
i++;
}
afiseaza();
fclose(f); fclose(g);
return 0;
}