Cod sursa(job #493741)

Utilizator rumburakrumburak rumburak Data 19 octombrie 2010 12:51:54
Problema Indep Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.58 kb
#include <cstdio>

const int N = 512;
const int R = 1024;

int n,a[N][R];

int cmmdc(int x,int y)
{
	int r;
	while(y != 0)
	{
		r = x%y;
		x = y;
		y = r;
	}
	return x;
}

int main()
{
	freopen("indep.in","r",stdin);
	freopen("indep.out","w",stdout);
	int x,d;
	scanf("%d",&n);
	for(int i=1 ; i<=n ; ++i)
	{
		scanf("%d",&x);
		++a[i][x];
		for(int j=1 ; j<R ; ++j)
		{
			if(a[i-1][j] == 0)
				continue;
			d = cmmdc(j,x);
			a[i][d] += a[i-1][j];
		}
		for(int j=1 ; j<R ; ++j)
			a[i][j] += a[i-1][j];
	}
	printf("%d\n",a[n][1]);
	return 0;
}