Cod sursa(job #34922)

Utilizator Adriana_SAdriana Sperlea Adriana_S Data 21 martie 2007 17:25:35
Problema Indep Scor 25
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.67 kb
#include <stdio.h>

const int N_MAX = 512;
const int C_MAX = 1024;

long long v[N_MAX], a[N_MAX][C_MAX];

long long cmmdc(long long a, long long b)
{
	if (b == 0) {
		return a;
	} else {
		return (cmmdc(b, a % b));
	}
}

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

	long long N, i, MAX = 0;
	scanf("%lld\n", &N);
	for (i = 1; i <= N; i ++) {
		scanf("%lld\n", &v[i]);
		if (v[i] > MAX) {
			MAX = v[i];
		}
	}

	long long j;
	for (i = 1; i <= N; i ++) {
		a[i][v[i]] ++;
		for (j = 1; j <= MAX; j ++) {
			a[i][cmmdc(v[i], j)] += a[i - 1][j];
			a[i][j] += a[i - 1][j];
		}
	}

	printf("%lld\n", a[N][1]);

	return 0;
}