Pagini recente » Cod sursa (job #135331) | Cod sursa (job #1888586) | Cod sursa (job #752728) | Cod sursa (job #788843) | Cod sursa (job #1737526)
# include <fstream>
using namespace std;
ifstream fin("indep.in");
ofstream fout("indep.out");
int p[505][400],s[400],sol[400],c[2][1010],f[1010],e[1010];
int v[505],val[2],aux[400],n,k,u,p1,i,j,ec,vc,nr;
void mul(int a[],int k,int b[]){
int t=0,i;
for(i=1;i<=a[0]||t;i++,t/=10)
b[i]=(t+=a[i]*k)%10;
b[0]=i-1;
}
void sum(int a[],int b[]){
int t=0,i;
for(i=1;i<=a[0]||i<=b[0]||t;i++,t/=10)
a[i]=(t+=a[i]+b[i])%10;
a[0]=i-1;
}
void sub(int a[],int b[]){
int t=0,i;
for(i=1;i<=a[0];i++){
a[i]=a[i]-b[i]-t;
if(a[i]>=0)
t=0;
else{
a[i]+=10;
t=1;
}
}
while(a[0]>0&&a[a[0]]==0)
a[0]--;
}
void copy(int a[],int b[]){
int i;
for(i=0;i<=b[0];i++)
a[i]=b[i];
}
int main () {
p1=1;
for(i=2;i<=1000;i++){
if(f[i]==0){
c[0][++u]=i;
c[1][u]=1;
e[++k]=i;
for(j=2*i;j<=1000;j+=i)
f[j]=1;
}
}
while(p1<=u){
ec=c[0][p1];
vc=c[1][p1++];
for(i=1;i<=k;i++){
if(ec%e[i]!=0&&ec*e[i]<=1000&&f[ec*e[i]]==1){
c[0][++u]=ec*e[i];
c[1][u]=-vc;
f[c[0][u]]=0;
}
}
}
fin>>n;
for(i=1;i<=n;i++)
fin>>v[i];
p[0][0]=p[0][1]=1;
for(i=1;i<=n;i++)
mul(p[i-1],2,p[i]);
val[0]=val[1]=1;
for(i=1;i<=u;i++){
nr=0;
for(j=1;j<=n;j++)
if(v[j]%c[0][i]==0)
nr++;
copy(aux,p[nr]);
sub(aux,val);
if(c[1][i]==1)
sum(s,aux);
else
sub(s,aux);
}
copy(sol,p[n]);
sub(sol,val);
sub(sol,s);
for(i=sol[0];i>=1;i--)
fout<<sol[i];
fout<<"\n";
return 0;
}