Pagini recente » Cod sursa (job #2119871) | Cod sursa (job #1277338) | Cod sursa (job #951624) | Cod sursa (job #593242) | Cod sursa (job #390049)
Cod sursa(job #390049)
#include <stdio.h>
#define NMAX 501
#define LMAX 1000
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();
int i;
for (i=best[1][0]; i>=1; i--)
printf("%d",best[1][i]);
return 0;
}