Pagini recente » Cod sursa (job #1437434) | Cod sursa (job #2643567) | Cod sursa (job #179585) | Cod sursa (job #1927210) | Cod sursa (job #80094)
Cod sursa(job #80094)
#include<stdio.h>
long int i,j,n,nd[1010],a[1010],d[6][1010],
cit,p,q,r,s,cont[1001],binar[510],
p2[510],sol[510],poz;
int main()
{
FILE *f,*g;
f=fopen("indep.in","r");
g=fopen("indep.out","w");
fscanf(f,"%ld",&n);
for(i=1;i<=1000;i++) a[i]=i;
for(i=2;i<=1000;i++)
if(a[i]>1)
for(j=i;j<=1000;j=j+i)
{ nd[j]++;
d[nd[j]][j]=i;
while(a[j]%i==0)a[j]/=i;
}
for(i=1;i<=n;i++)
{ fscanf(f,"%ld",&cit);
if(cit>1)
{
if(nd[cit]==1)
{
p=d[1][cit];
cont[p]++;
}
else
if(nd[cit]==2)
{
p=d[1][cit];
q=d[2][cit];
cont[p]++;
cont[q]++;
cont[p*q]++;
}
else
if(nd[cit]==3)
{
p=d[1][cit];
q=d[2][cit];
r=d[3][cit];
cont[p]++;
cont[q]++;
cont[r]++;
cont[p*q]++;
cont[p*r]++;
cont[q*r]++;
cont[p*q*r]++;
}
else
{
p=d[1][cit];
q=d[2][cit];
r=d[3][cit];
s=d[4][cit];
cont[p]++;
cont[q]++;
cont[r]++;
cont[s]++;
cont[p*q]++;
cont[p*r]++;
cont[q*r]++;
cont[p*s]++;
cont[q*s]++;
cont[r*s]++;
cont[p*q*r]++;
cont[p*q*s]++;
cont[p*r*s]++;
cont[q*r*s]++;
cont[p*q*r*s]++;
}
}
}
for(i=0;i<n;i++)binar[i]=1;
for(i=2;i<=1000;i++)
if(cont[i]==n)
{ fprintf(g,"0\n");
fcloseall();
return 0;
}
for(i=2;i<=1000;i++)
if(cont[i]){ if(nd[i]%2)for(j=0;j<cont[i];j++)binar[j]--;else for(j=0;j<cont[i];j++)binar[j]++;}
for(i=0;i<=500;i++){ while(binar[i]<0){ binar[i]+=2;binar[i+1]--;}while(binar[i]>1){ binar[i]-=2;binar[i+1]++;}}
p2[0]=1;
for(i=0;i<=500;i++){ if(binar[i]){ for(j=0;j<=500;j++)sol[j]+=p2[j];for(j=0;j<=500;j++){sol[j+1]+=sol[j]/10;sol[j]%=10;}}for(j=0;j<=500;j++)p2[j]*=2;for(j=0;j<=500;j++){p2[j+1]+=p2[j]/10;p2[j]%=10;}}
poz=500;
while(!sol[poz])poz--;
if(poz==-1) fprintf(g,"0\n");
else
{ for(i=poz;i>=0;i--)
fprintf(g,"%ld",sol[i]);
fprintf(g,"\n");
}
fcloseall();
return 0;
}