Cod sursa(job #411018)

Utilizator eudanipEugenie Daniel Posdarascu eudanip Data 4 martie 2010 18:09:51
Problema Indep Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.75 kb
#include<stdio.h>
int d[501][1001];
int n,v[501],maxim;
int cmmdc(int a,int b)
{
    int r;
    while(a%b)
    {
        r=a%b;
        a=b;
        b=r;
    }
    return b;
}
int main ()
{
    int i,j;
    freopen("indep.in","r",stdin);
    freopen("indep.out","w",stdout);
    scanf("%d",&n);
    for(i=1;i<=n;i++)
    {
        scanf("%d",&v[i]);
        if(v[i]>maxim)
            maxim=v[i];
    }
    d[1][v[1]] = 1;
    for(i=1;i<=n-1;i++)
    {
        for (j = 1; j <= maxim; ++j)
            d[i+1][j] = 0;
        d[i+1][v[i+1]] = 1;
        for(j=1;j<=maxim;j++)
        {
            d[i+1][cmmdc(j,v[i+1])]+=d[i][j];
            d[i+1][j]+=d[i][j];
        }
    }
    
    printf("%d\n",d[n][1]);
    return 0;
}