Cod sursa(job #494616)

Utilizator joli94Apostol Adrian Alexandru joli94 Data 22 octombrie 2010 12:20:45
Problema Indep Scor 5
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.81 kb
#include<cstdio>

int MAX = -1 , n , d, a[1000][1000] , v[1001];

int cmmdc(int a , int b)
{
	int r;
	while(b)
	{
		r=a%b;
		a=b;
		b=r;
	}
	return a;
}

void read()
{
	freopen ( "indep.in" , "r" , stdin );
	freopen ( "indep.out" , "w" , stdout );
	scanf("%d" , &n);
	for (int i=1 ; i<=n ; ++i )
	{
		scanf ( "%d" , &v[i] );
		if (v[i]>MAX) MAX = v[i];
	}
}

void solve()
{
	a[1][v[1]] = 1;
	for (int i=2 ; i<=n ; ++i )
	{
		for (int j=1 ; j<=MAX ; ++j )
		{
			if (a[i-1][j] != 0 )
			{
				d = cmmdc ( j, v[i] );
				a[i][d] += a[i-1][j];
			}
			a[i][j]+=a[i-1][j];
		}
		++a[i][v[i]];
	}
	for(int i=1;i<n;++i)
	{
		for(int j=1;j<MAX;++j)
		{
			printf("%5d",a[i][j]);
		}
		printf("\n");
	}
	printf("%d\n" , a[n][1]);
}

int main()
{
	read();
	solve();
	return 0;
}