Cod sursa(job #506566)

Utilizator Bit_MasterAlexandru-Iancu Caragicu Bit_Master Data 5 decembrie 2010 11:50:20
Problema Indep Scor 5
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.74 kb
/*
pt fiecare pas;
nr solutii += 2^(n-i) - 2^(n-i-x)
x = nr de nr prime cu nr de la pasul curent;
*/

#include <cstdio>

const int N = 501;

int v[N],n;

void citire()
{
	scanf("%i",&n);
	for (int i = 1; i <= n; ++i)
		scanf("%i",&v[i]);
}

int cmmdc(int a, int b)
{
	int aux;
	while (b != 0)
	{
		aux = a%b;
		a = b;
		b = aux;
	}
	return a;
}

int calc_x(int i)
{
	int x=0;
	for (int j = i+1; j <= n; ++j)
		if (cmmdc(v[i],v[j]) == 1)
			++x;
	return x;
}

void calculare()
{
	long long rez=0,x;
	for (int i = 1; i <= n; ++i)
	{
		x = calc_x(i);
		rez += (1<<(n-i)) - (1<<(n-i-x));
		if (v[i] == 1)
			++rez;
	}
	printf("%lli",rez);
}

int main()
{
	freopen("indep.in","r",stdin);
	freopen("indep.out","w",stdout);
	citire();
	calculare();
	return 0;
}