Pagini recente » Cod sursa (job #1080081) | Cod sursa (job #2554281) | Cod sursa (job #2459322) | Cod sursa (job #733123) | Cod sursa (job #1850681)
#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];
}
nr[i][v[i]]++;
}
for( i = 1; i <= N; i++)
{
for( j = 1; j <= max; j++)
out<<nr[i][j]<<" ";
out<<'\n';
}
out<<nr[N][1];
return 0;
}