Cod sursa(job #892802)

Utilizator thesilverhand13FII Florea Toma Eduard thesilverhand13 Data 26 februarie 2013 11:45:31
Problema Indep Scor 25
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.17 kb
# include <fstream>
# include <cstring>
# include <algorithm>
# include <vector>


using namespace std;

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

unsigned long long dp[ 1005 ];
int A[ 505 ];
int N;

unsigned long long  cmmdc( unsigned long long X, unsigned long long Y )
{
    if ( X < Y )
       return cmmdc( X, Y - X );
    else
    if ( X > Y )
       return cmmdc( X - Y, Y );
    else
       return X;
}

void citire()
{
    int i;

    f >> N;
    for ( i = 1 ; i <= N ; i++ )
       f >> A[ i ];
}

void rezolva()
{
    int i, j;
    unsigned long long nr;

    //for ( i = 1 ; i <= 1000 ; i++ )
       //dp[ 1 ][ i ] = 1;

    for ( i = 1  ; i <= N ; i++ )
    {
        for ( j = 1 ; j <= 1000 ; j++ )
        {
            nr = cmmdc( A[ i ], j );
            dp[ nr ] += dp[ j ];
        }
        dp[ A[ i ] ] ++;
    }
}

void afisare()
{
    int i, j;
   /* for ( i = 1 ; i <= 10 ; i++ )
    {
        for ( j = 1 ; j <= N ; j++ )
           g << dp[ i ][ j ] << " ";
        g << "\n";
    }
    */

   g << dp[ 1 ];
}

int main()
{
    citire();
    rezolva();
    afisare();
    return 0;
}