Cod sursa(job #6531)
Utilizator | Data | 19 ianuarie 2007 23:10:08 | |
---|---|---|---|
Problema | Indep | Scor | 25 |
Compilator | cpp | Status | done |
Runda | Arhiva de probleme | Marime | 1.07 kb |
#include<stdio.h>
const int maxn = 1010;
long long j;
long long mat[maxn][maxn];
long long a[maxn];
long long i;
long long n;
long long cmmdc(long long a, long long b)
{
while (a)
{
long long aux=a;
a=b%a;
b=aux;
}
return b;
}
int main()
{
freopen("indep.in","r",stdin);
freopen("indep.out","w",stdout);
scanf("%lld",&n);
for(i=1;i<=n;i++)
{
long long x;
scanf("%lld",&a[i]);
mat[i][a[i]]=1;
}
long long x;
for(i=2;i<=n;i++)
{
for(j=1;j<=1000;j++)
mat[i][j]+=mat[i-1][j];
for(j=1000;j>0;j--)
if (mat[i-1][j]!=0)
{
x=cmmdc(j,a[i]);
mat[i][x]+=mat[i-1][j];
}
}
printf("%lld\n",mat[n][1]);
return 0;
}