Pagini recente » Cod sursa (job #2414453) | Cod sursa (job #2120708) | Cod sursa (job #664407) | Cod sursa (job #2550485) | Cod sursa (job #495775)
Cod sursa(job #495775)
#include<stdio.h>
const int C = 200;
short int n,v[502],a[2][1002][C];
int cmmdc(int a, int b)
{
int r;
while(b)
{
r=a%b;
a=b;
b=r;
}
return a;
}
void suma(short int a[],short int b[])
{
int tr=0,i=0;
for(i=1;i<=a[0]||i<=b[0]||tr;tr/=10,++i)
{
tr+=a[i]+b[i];
a[i]=tr%10;
}
a[0]=i-1;
}
int main()
{
freopen("indep.in","r",stdin);
freopen("indep.out","w",stdout);
int i,j,d,k;
short int unu[C]={0};
unu[0]=unu[1]=1;
scanf("%d",&n);
for(i=1;i<=n;++i)
scanf("%d",&v[i]);
for(i=1;i<=n;++i)
{
for(j=1;j<=1000;++j)
for(k=0;k<C;++k)
a[i%2][j][k]=a[(i-1)%2][j][k];
for(j=1;j<=1000;++j)
{
d=cmmdc(v[i],j);
suma(a[i%2][d],a[1-i%2][j]);
}
suma(a[i%2][v[i]],unu);
}
if(a[n%2][1][0])
for(i=a[n%2][1][0];i>=1;i--)
printf("%d",a[n%2][1][i]);
else printf("0");
return 0;
}