Cod sursa(job #96633)

Utilizator victorsbVictor Rusu victorsb Data 2 noiembrie 2007 16:04:32
Problema Indep Scor 25
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.67 kb
#include <cstdio>
#include <cstring>

#define Nmax 1024
#define ll long long

int n, m = 1000;
ll d[2][Nmax];
int sir[Nmax];

int gcd(int a, int b)
{
	if (b == 0)
		return a;
	else
		return gcd(b, a % b);
}

void citire()
{
	int i;

	scanf("%d\n", &n);
	for (i = 1; i <= n; ++i)
		scanf("%d\n", &sir[i]);
}

void solve()
{
	int i, j, step = 0;

	for (j = 1; j <= n + 1; ++j, step = !step)
	{
		memcpy(d[!step], d[step], sizeof(d[step]));

		for (i = 1; i <= m; ++i)
			d[!step][gcd(sir[j], i)] += d[step][i];
		++d[!step][sir[j]];
	}

	printf("%lld\n", d[!step][1]);
}

int main()
{
	freopen("indep.in", "r", stdin);
	freopen("indep.out", "w", stdout);

	citire();
	solve();

	return 0;
}