Pagini recente » Cod sursa (job #2247724) | Cod sursa (job #2385100) | Cod sursa (job #1349219) | Cod sursa (job #544708) | Cod sursa (job #1850652)
#include <iostream>
#include <fstream>
using namespace std;
ifstream in ("indep.in");
ofstream out ("indep.out");
int N, v[505];
long long nr[505][505];
//nr[i][j] cate subsiruri ale pref de lungime i au cmmdcul j
//la sfarsit nr[n][1]
int cmmdc(int a, int b)
{
if(a>b)
return cmmdc(a-b,b);
if(a<b)
return cmmdc(a,b-a);
if(a==b)
return a;
}
int main()
{
in >> N;
int i,j,div,max=0;
for( i = 1; i <= N ; i++ )
{
in>>v[i];
if(v[i]>=max)
max=v[i];
}
nr[1][v[1]] = 1;
for( i = 2; i <= N; i++)
{
for( j = 1; j <= max; j++)
{
nr[i][j] = nr[i-1][j];
}
for( j = 1; j <= max; j++)
{
div = cmmdc (j,v[i]);
nr[i][div] += nr[i-1][j];
}
}
for( i = 1; i <= N; i++)
{
for( j = 1; j <= N; j++)
out<<nr[i][j]<<" ";
out<<'\n';
}
out<<nr[N][1];
return 0;
}