Pagini recente » Cod sursa (job #1856935) | Cod sursa (job #1281167) | Cod sursa (job #1675982) | Cod sursa (job #1492328) | Cod sursa (job #37153)
Cod sursa(job #37153)
#include <stdio.h>
#include <string.h>
int cmmdc(int x,int y)
{
if(!y)
return x;
else
return cmmdc(y,x%y);
}
void inc(int A[], int B[])
{
int i, t = 0;
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;
}
int a[2][1024][1024], v[512];
int aux[1024];
int main()
{
freopen("indep.in","r",stdin);
freopen("indep.out","w",stdout);
int n,i,j, tmp, MAX=0, i1=0,i2=1;
aux[0] = 1;
aux[1] = 1;
scanf("%d", &n);
for(i=1;i<=n;++i)
{
scanf("%d", &v[i]);
if(v[i] > MAX)
MAX = v[i];
}
for(i=1;i<=n;++i)
{
inc(a[i2][v[i]],aux);
for(j=1;j<=MAX;++j)
if(a[i1][j][0])
{
tmp = cmmdc(v[i],j);
inc(a[i2][tmp],a[i1][j]);
inc(a[i2][j], a[i1][j]);
}
if(i2==1)
i2=0,i1=1;
else
i2=1,i1=0;
for(j=1;j<=MAX;++j)
memset(a[i2][j],0,4*(a[i2][j][0]+1));
}
for(i=a[i1][1][0]; i>0; --i)
printf("%d",a[i1][1][i]);
if(a[i1][1][0] == 0)
fputs("0\n",stdout);
return 0;
}