Cod sursa(job #158883)

Utilizator MariusGeantaMarius Geanta MariusGeanta Data 13 martie 2008 20:52:04
Problema Economie Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.8 kb
#include<stdio.h>
unsigned char v[50001];
long long y[1001],min;long x,max,minim=50001;
int n;
int main()
{	int t,i,j;
	long long sigma;
	FILE *f=fopen("economie.in","r");
	fscanf(f,"%d",&n);
	for (i=1,max=0;i<=n;i++)
	      {	fscanf(f,"%ld",&x);
		v[x]=1;
		if (x>max) max=x;
		if (x<minim) minim=x; }
	fclose(f);
	if (minim==1)
	{ min=1;y[1]=1; }
	else
	{
	min=1;y[1]=(long long)minim;
	for (i=1;i*minim<=max;i++) v[i*minim]=2;
	for (i=minim+1;i<=max;i++)
		if (v[i]==1)
		{  min++;
		   y[min]=(long long)i;
		   for (j=min;j>=1;j--)
		   { 	sigma=0;
			for (t=j;t<=min;t++) sigma+=y[t];
			for (t=1;t*sigma<=max;t++) v[t*sigma]=2;
		   }
		}
	}
	FILE *g=fopen("economie.out","w");
	fprintf(g,"%lld\n",min);
	for (i=1;i<=min;i++)
		fprintf(g,"%lld\n",y[i]);
	fclose(g);
	return 0;
}