Cod sursa(job #2095063)

Utilizator dianamariaDiana Cataros dianamaria Data 26 decembrie 2017 21:11:33
Problema Indep Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.03 kb
#include <fstream>

using namespace std;
ifstream in ("indep.in");
ofstream out ("indep.out");
const int N=1010;
const int komod=100000000;
int n;
int v[30],a[N][30];

int cmmdc(int a,int b)
{
    int r;
    while (b)
    {
        r=a%b;
        a=b;
        b=r;
    }
    return a;
}

void aduna(int a[],int b[])
{
    int i=1,nr=0;
    while (i<=a[0] || i<=b[0] || nr!=0)
    {
        nr+=a[i]+b[i];
        a[i]=nr%komod;
        i++;
        nr/=komod;
    }
    a[0]=i-1;
}

int main()
{
    int i,x,j;
    in>>n;
    for (i=1;i<=1000;i++)
        a[i][0]=1;
    v[0]=v[1]=1;
    for (i=1;i<=n;i++)
    {
        in>>x;
        for (j=1;j<=1000;j++)
            aduna(a[cmmdc(x,j)],a[j]);
        aduna(a[x],v);
    }
    out<<a[1][a[1][0]];
    for (i=a[1][0]-1;i>0;i--)
    {
        int c=a[1][0], nr=0;
        while(c)
            nr++, c/=10;
        c=8-nr;
        while (c)
        {
            out<<0;
            c--;
        }
        out<<a[1][i];
    }
    return 0;
}