Cod sursa(job #878713)

Utilizator ard_procesoareLupicu ard_procesoare Data 14 februarie 2013 18:29:49
Problema Indep Scor 5
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.26 kb
#include <fstream>
using namespace std;
ifstream fin("indep.in");
ofstream fout("indep.out");
#define NMAX 505
#define NMAX2 1005
#define LENGTH 1020
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,j=0,dist=b[0];
    if(a[0]>b[0]) dist=a[0];
    for(i=1;i<=dist || a[i];i++)
    {
        a[i]+=b[i];
        if(a[i]>9)
        {
            a[i+1]+=a[i]/10;
            a[i]%=10;
        }
        j=i;
    }
    a[0]=j;
}
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()
{
    if(d[1][0]==0)
    {
        fout<<0;
        return;
    }
   // for(int i=1;i<=1002;i++) if(d[j][i]) dist=i;
    for(int i=d[1][0];i;i--)
        fout<<d[1][i];
}
int main()
{
    aux[0]=1;
    aux[1]=1;
  //  sum(d[1],aux);
    read();
    solve();
    tipar();
}