Cod sursa(job #878679)

Utilizator ard_procesoareLupicu ard_procesoare Data 14 februarie 2013 18:01:32
Problema Indep Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.23 kb
#include <fstream>
using namespace std;
ifstream fin("indep.in");
ofstream fout("indep.out");
#define NMAX 505
#define NMAX2 1005
#define LENGTH 1006
int n,v[NMAX],d[NMAX2][LENGTH],aux[1005];
void tipar();
void read()
{
    fin>>n;
    for(int i=1;i<=n;i++)
    {
        fin>>v[i];
    }
}
void sum(int a[],int b[])
{
    int i,dist=0;
    a[0]=1;
    for(i=1;i<=LENGTH;i++)
        if(b[i]) dist=i;
    dist+=2;
    for(i=1;i<dist;i++)
    {
        a[i]+=b[i];
        if(a[i]>9)
        {
            a[i+1]+=a[i]/10;
            a[i]%=10;
        }
    }
}
int cmmdc(int a,int b)
{
    while(a!=b)
    {
        if(a>b) a=a-b;
        if(b>a) b=b-a;
    }
    return a;
}
void solve()
{
    int i,j;
    for(i=1;i<=n;i++)
    {
        for(j=1;j<1001;j++)
        {
            if(d[j][0])
            {
                sum(d[cmmdc(j,v[i])],d[j]);
            }
        }
        sum(d[v[i]],aux);
        //tipar();
    }
}
void tipar()
{
    int dist;
    for(int i=1;i<=1002;i++) if(d[1][i]) dist=i;
    for(int i=dist;i;i--)
        fout<<d[1][i];
    //fout<<endl;
}
int main()
{
    aux[0]=0;
    aux[1]=1;
    read();
    solve();
   // sum(d[1],aux);
    tipar();
}