Pagini recente » Cod sursa (job #1446409) | Cod sursa (job #2401982) | Cod sursa (job #393092) | Cod sursa (job #2097357) | Cod sursa (job #390052)
Cod sursa(job #390052)
#include <stdio.h>
#define NMAX 501
#define LMAX 1002
int n,v[NMAX],best[LMAX][NMAX],unu[2];
void read()
{
scanf("%d",&n);
int i;
for (i=1; i<=n; i++)
scanf("%d",&v[i]);
unu[0]=1; unu[1]=1;
}
int cmmdc(int a,int b)
{
int r;
while(b)
{
r=a%b;
a=b;
b=r;
}
return a;
}
void add(int A[], int B[])
{
int i, t = 0;
if (!A[0] && !B[0])
return ;
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 solve()
{
int i,j,t;
for (i=1; i<=n; i++)
{
for (j=1; j<=1000; j++)
{
t=cmmdc(v[i],j);
add(best[t],best[j]);
}
add(best[v[i]],unu);
}
}
int main()
{
freopen("indep.in","r",stdin);
freopen("indep.out","w",stdout);
read();
solve();
if (!best[1][0])
{
printf("0\n");
return 0;
}
int i;
for (i=best[1][0]; i>=1; i--)
printf("%d",best[1][i]);
return 0;
}