Cod sursa(job #114420)

Utilizator sims_glAlexandru Simion sims_gl Data 14 decembrie 2007 09:05:16
Problema Indep Scor 5
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.72 kb
#include <stdio.h>
#include <string.h>

#define nm 512
#define mm 1024

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

int n, a[nm], last[mm], crt[mm];

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

	scanf("%d", &n);

	for (int i = 1; i <= n; ++i)
		scanf("%d", &a[i]);

	crt[a[1]] = last[a[1]] = 1;
/*
	for (int i = 1; i <= 1000; ++i)
		printf("%d ", last[i]);
	printf("\n");
*/
	for (int i = 2; i <= n; ++i) {
		for (int j = 1; j <= 1000; ++j) {
			int aux = cmmdc(j, a[i]);

			crt[aux] += last[j];
		}
/*
		for (int j = 1; j <= 1000; ++j)
			printf("%d ", crt[j]);
		printf("\n");
*/
		memcpy(last, crt, sizeof(crt));
	}

	printf("%d\n", crt[1]);

	return 0;
}