Cod sursa(job #257676)
Utilizator | Data | 13 februarie 2009 19:29:01 | |
---|---|---|---|
Problema | Indep | Scor | 10 |
Compilator | cpp | Status | done |
Runda | Arhiva de probleme | Marime | 0.59 kb |
#include <cstdio>
#include <cassert>
int N,a[505],sol;
int cmmdc(int x,int y){
if (y==0) return x;
return cmmdc(y,x%y);
}
int main(){
int i,j,k;
freopen("indep.in","r",stdin);
freopen("indep.out","w",stdout);
scanf("%d",&N);
for (i=1;i<=N;++i)
scanf("%d",&a[i]);
assert(N<=30);
int doilan=1<<N,nr;
for (i=1;i<doilan;++i){
nr=0;k=0;
for (j=0;j<N;++j)
if ((1<<j)&i){
++nr;
k=cmmdc(k,a[j+1]);
}
if (nr>1 && k==1) ++sol;
}
printf("%d",sol);
return 0;
}