Cod sursa(job #494610)

Utilizator dushmiMihai-Alexandru Dusmanu dushmi Data 22 octombrie 2010 11:54:28
Problema Indep Scor 25
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.77 kb
#include<cstdio>
int MAX,n,a[1<<9];
long long 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]);
        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++)
    {
        d[i][a[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];
            }
    }
    d[n][a[n]]++;
    printf("%lld",d[n][1]);
}
int main()
{
    read();
    solve();
    return 0;
}