Cod sursa(job #215114)

Utilizator Matei14Popa-Matei Mihai Matei14 Data 17 octombrie 2008 16:42:47
Problema Indep Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.82 kb
#include<stdio.h>
#define N 1007
int v[N],w[N],x[N];
void ciur(){
	int i,j,k;
	for(i=2;i<N;++i){
		if(!w[i])
			for(j=i;j<=N;j+=i)
				++w[j];
	}
	for(i=2;(k=i*i)<N;++i)
		if(w[i]==1)
			for(j=k;j<=N;j+=k)
				w[j]=0;
}

void ciur2(){
	//x[i]=cati multipli ai lui i sunt in multime
	int i,j,k;
	for(i=2;i<=N;++i)
		if(w[i])
			for(j=i+i;j<N;j+=i)
				if(v[j])
					++x[i];
}
/*
int cond(int x){
	int i;
	for(i=2;i*i<=x;++i)
		if(!w[i])
			return 1;
	return 0;
}
*/

int main(){
	int n,i,s=0,y;
	freopen("indep.in","r",stdin);
	freopen("indep.out","w",stdout);
	scanf("%d",&n);
	for(i=1;i<=n;++i){
		scanf("%d",&y);
		v[y]++;
	}
	ciur();
	ciur2();
	for(i=1;i<n;++i)
		if(w[i]%2)
			s+=(1<<x[i]);
		else
			s-=(1<<x[i]);
	printf("%d\n",s+1);
	fclose(stdin);
	fclose(stdout);
	return 0;
}