Cod sursa(job #494608)

Utilizator dushmiMihai-Alexandru Dusmanu dushmi Data 22 octombrie 2010 11:47:44
Problema Indep Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.74 kb
#include<cstdio>
int MAX,n,a[1<<9],d[1<<9][1<<10];
void read()
{
    freopen("indep.in","r",stdin);
    freopen("indep.out","w",stdout);
    scanf("%d",&n);
    for(int i=1;i<=n;i++)
    {
        scanf("%d",&a[i]);
        d[i][a[i]]=1;
        if(a[i]>MAX)
            MAX=a[i];
    }
}
int cmmdc(int x,int y)
{
    int r=x%y;
    while(r)
    {
        x=y;
        y=r;
        r=x%y;
    }
    return y;
}
void solve()
{
    for(int i=1;i<=n;i++)
    {
        for(int j=1;j<=MAX;j++)
            if(d[i][j])
            {
                d[i+1][j]+=d[i][j];
                d[i+1][cmmdc(a[i+1],j)]+=d[i][j];
            }
    }
    printf("%d",d[n][1]);
}
int main()
{
    read();
    solve();
    return 0;
}