Pagini recente » Cod sursa (job #2850365) | Cod sursa (job #2268199) | Cod sursa (job #3179613) | Cod sursa (job #2314338) | Cod sursa (job #892517)
Cod sursa(job #892517)
# 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;
}