Cod sursa(job #402582)

Utilizator eudanipEugenie Daniel Posdarascu eudanip Data 23 februarie 2010 23:02:42
Problema Indep Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.66 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];
    }
    for(i=1;i<=n;i++)
        d[i][v[i]]=1;
    for(i=1;i<=n-1;i++)
        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;
}