Cod sursa(job #892517)

Utilizator thesilverhand13FII Florea Toma Eduard thesilverhand13 Data 26 februarie 2013 10:17:22
Problema Indep Scor 5
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.21 kb
 # include <fstream>
 # include <cstring>
 # include <algorithm>
 # include <vector>


 using namespace std;

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

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

 int cmmdc( int X, int 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;
     long long nr;

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

     for ( i = 1  ; i <= N ; i++ )
     {
         for ( j = 1 ; j <= A[ i ] ; j++ )
         {
             nr = cmmdc( A[ i ], j );
             dp[ i ][ nr ] += dp[ i - 1 ][ j ] + dp[ i - 1 ][ nr ];
         }
         dp[ i ][ 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[ N ][ 1 ];
 }

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