Pagini recente » Cod sursa (job #1106048) | Cod sursa (job #2641187) | Cod sursa (job #797802) | Cod sursa (job #1649106) | Cod sursa (job #80090)
Cod sursa(job #80090)
#include<stdio.h>
long int i,j,n,nd[1001],a[1001],d[5][1001],cit,p,q,r,s,cont[1001],binar[502],
p2[502],sol[502],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]++;}
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]){ 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;
}