Cod sursa(job #6531)

Utilizator mariusdrgdragus marius mariusdrg 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;
        
}