Cod sursa(job #6530)

Utilizator mariusdrgdragus marius mariusdrg Data 19 ianuarie 2007 23:09:05
Problema Indep Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.99 kb
#include<stdio.h>


const int maxn  = 1010;

int j;
int mat[maxn][maxn];
int a[maxn];
int i;
int n;


int cmmdc(int a, int b)
{

        while (a)
        {
                int aux=a;
                a=b%a;
                b=aux;
        }
        return b;
}


int main()
{
        freopen("indep.in","r",stdin);
        freopen("indep.out","w",stdout);
        scanf("%d",&n);
        for(i=1;i<=n;i++)
        {
                int x;
                scanf("%d",&a[i]);
                mat[i][a[i]]=1;
        }
        int 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("%d",mat[n][1]);


        return 0;
        
}