Pagini recente » Cod sursa (job #2072980) | Cod sursa (job #2903766) | Cod sursa (job #2034680) | Cod sursa (job #1737552) | Cod sursa (job #1737964)
# include <fstream>
using namespace std;
ifstream fin("indep.in");
ofstream fout("indep.out");
int p[505][400],sol[400],f[1010],e[1010];
int v[505],val[2],aux[400],n,k,i,j,nr,nr1,nr2,maxim,d,r,ok;
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{
t=1;
a[i]+=10;
}
}
while(a[0]>1&&a[a[0]]==0)
a[0]--;
}
int main () {
fin>>n;
for(i=1;i<=n;i++){
fin>>v[i];
maxim=max(maxim,v[i]);
}
for(i=2;i<=maxim;i++)
if(f[i]==0){
e[++k]=i;
for(j=2*i;j<=maxim;j+=i)
f[j]=1;
}
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=0;i<=n;i++)
sub(p[i],val);
sum(sol,p[n]);
for(i=2;i<=maxim;i++){
d=i;
nr1=0;
r=0;
ok=1;
nr=0;
while(d!=1){
nr2=0;
r++;
while(d%e[r]==0){
nr2++;
d/=e[r];
}
if(nr2>1)
ok=0;
if(nr2!=0)
nr1++;
}
if(ok){
for(j=1;j<=n;j++)
if(v[j]%i==0)
nr++;
if(nr1%2)
sub(sol,p[nr]);
else
sum(sol,p[nr]);
}
}
for(i=sol[0];i>=1;i--)
fout<<sol[i];
fout<<"\n";
return 0;
}