Pagini recente » Cod sursa (job #1838196) | Cod sursa (job #2852021) | Cod sursa (job #1454090) | Cod sursa (job #2233852) | Cod sursa (job #126739)
Cod sursa(job #126739)
#include <stdio.h>
long l,i,j,k,n;
long a[501];
long din[2][1001][51];
void add(int p, int q,int r, int t)
{
int i,tr=0;
for (i=50; i>=1; i--)
{
din[p][q][i]+=din[r][t][i]+tr;
tr=din[p][q][i]/100000000;
din[p][q][i]%=100000000;
}
}
long cmmdc(long x, long y)
{
int a=x,b=y,r;
while (b)
{
r=a%b;
a=b;
b=r;
}
return a;
}
int main()
{
freopen("indep.in","r",stdin);
freopen("indep.out","w",stdout);
scanf("%ld",&n);
for (i=1; i<=n; i++)
scanf("%ld",&a[i]);
//fac dinamica
l=0;
for (i=1; i<=n; i++)
{
l=1-l;
din[l][a[i]][50]++;
if (l==1)
for (j=1; j<=1000; j++)
{
// add(1,j,0,j);
add(1,cmmdc(j,a[i]),0,j);
// int o;
// for (o=1; o<=50; o++)
// din[0][j][o]=0;
}
else
for (j=1; j<=1000; j++)
{
// add(0,j,1,j);
add(0,cmmdc(j,a[i]),1,j);
// int o;
// for (o=1; o<=50; o++)
// din[1][j][o]=0;
}
}
//afisez solutia
j=0;
for (i=1; i<=50; i++)
if (din[l][1][i]!=0)
{
for (j=i; j<=50; j++)
printf("%ld",din[l][1][j]);
printf("\n");
return 0;
}
printf("0\n");
return 0;
}