Cod sursa(job #1036454)

Utilizator Fulga.AlinFulga Alin Fulga.Alin Data 19 noiembrie 2013 13:23:04
Problema Indep Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.79 kb
#include <fstream>

using namespace std;

ifstream in("indep.in");
ofstream out("indep.out");

int n,v[501],i,j,NC=10;
long long d[501][1005];

int cmmdc(int a,int b)
{
    int r;
    while(b!=0)
    {
        r = a%b;
        a = b;
        b = r;
    }
    return a;
}
void adunare(int a[NC],int b[NC])
{
    int t=0,k,aux;
    for(k=1;i<=a[0]||i<=b[0]||t!=0;i++)
    {
        aux=t+a[i]+b[i];
        a[i]=aux%10;
        t=aux/10;
    }
    a[0]=i-1;
}
int main()
{
    in>>n;
    for(i=1; i<=n; i++)
        in>>v[i];
    d[0][0]=1;
    for(i=1; i<=n; i++)
    {
        for(j=0; j<=1000; j++)
            adunare(d[i][cmmdc(j,v[i])],d[i-1][j]);
        for(j=0; j<=1000; j++)
            adunare(d[i][j],d[i-1][j])
    }
    out << d[n][1];
    return 0;
}