Cod sursa(job #240104)

Utilizator mika17Mihai Alex Ionescu mika17 Data 6 ianuarie 2009 21:04:15
Problema Indep Scor 25
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.99 kb
#include <fstream>
using namespace std;

const int NMAX = 500, VMAX = 1000;

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

        return a;
}

int main()
{
        long long N,A[VMAX],B[VMAX],sir[NMAX],max = 0;
        ifstream fin("indep.in");
        ofstream fout("indep.out");

        memset(A,0,sizeof(A));

        fin>>N;
        for(int i = 0 ; i < N; ++i)
        {
                fin>>sir[i];
                max = sir[i] > max ? sir[i] : max;
        }

        A[ sir[0] ] = 1;

        for(int i = 1; i < N ; ++i)
        {
                memcpy(B,A,sizeof A);     // B[j] = A[j]

                B[ sir[i] ] ++;

                for(int j = 1; j <= max; ++j)
                       if( A[j] )
                        B[cmmdc(j,sir[i])] += A[j];

                memcpy(A,B,sizeof A);
        }

        fout<<A[1];

        return 0;
}