Pagini recente » Cod sursa (job #2783879) | Cod sursa (job #3263340) | Cod sursa (job #884022) | Cod sursa (job #2693454) | Cod sursa (job #893003)
Cod sursa(job #893003)
# include <fstream>
# include <cstring>
# include <algorithm>
# include <vector>
# define baza 10
using namespace std;
ifstream f("indep.in");
ofstream g("indep.out");
long dp[ 1005 ][ 1005 ];
long unu[ 1005 ];
long A[ 505 ];
int N;
inline int cmmdc(int a, int b)
{
if(!b)
return a;
return
cmmdc(b, a % b);
}
void citire()
{
int i;
f >> N;
for ( i = 1 ; i <= N ; i++ )
f >> A[ i ];
}
void aduna( long A[], long B[] )
{
int i, t = 0;
for ( i = 1 ; i <= A[ 0 ] || i <= B[ 0 ] || t ; i++ )
{
A[ i ] = ( t += A[ i ] + B[ i ] ) % baza;
t = t / baza;
}
A[ 0 ] = i - 1;
}
void rezolva()
{
int i, j;
int nr;
unu[ 0 ] = unu[ 1 ] = 1;
for ( i = 1 ; i <= N ; i++ )
{
for ( j = 1 ; j < 1000 ; j++ )
{
nr = cmmdc( A[ i ], j );
aduna( dp[ nr ] , dp[ j ] );
}
//dp[ A[ i ] ] ++;
aduna( dp[ A[ i ] ], unu );
}
}
void afisare()
{
int i, j;
/* for ( i = 1 ; i <= 10 ; i++ )
{
for ( j = 1 ; j <= N ; j++ )
g << dp[ i ][ j ] << " ";
g << "\n";
}
*/
for ( i = dp[ 1 ][ 0 ] ; i >= 1 ; i-- )
g << dp[ 1 ][ i ] <<"";
}
int main()
{
citire();
rezolva();
afisare();
return 0;
}