Cod sursa(job #1695473)

Utilizator Alexa2001Alexa Tudose Alexa2001 Data 27 aprilie 2016 11:37:55
Problema Indep Scor 55
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.85 kb
#include <cstdio>

using namespace std;

int n, mic[5], x,j, y, i , ans[1005][505] ;

int cmmdc(int x, int y)
{
    int r=x%y;
    while(r) x=y, y=r, r=x%y;
    return y;
}

void add(int a[], int b[])
{
    int t=0, i;
    for(i=1; i<=a[0] || i<=b[0] || t; ++i)
    {
         t+=a[i]+b[i];
         a[i]=t%10;
         t/=10;
    }
    a[0]=i-1;
}

int main()
{
    freopen("indep.in", "r", stdin);
    freopen("indep.out", "w", stdout);

    scanf("%d", &n);

    mic[0]=mic[1]=1;
    for(i=1; i<=1000; ++i) ans[i][0]=1;

    for(i=1; i<=n; ++i)
    {
        scanf("%d", &x);

        for(j=1; j<=1000; ++j)
        {
            y=cmmdc(x, j);
            add( ans[y], ans[j]);
        }

        add(ans[x], mic);
    }

    for(i=ans[1][0]; i; --i ) printf("%d", ans[1][i]);

    printf("\n");

    return 0;
}