Cod sursa(job #498829)

Utilizator ooctavTuchila Octavian ooctav Data 6 noiembrie 2010 10:29:50
Problema Indep Scor 5
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.74 kb
#include<cstdio>
#include<iostream>
using namespace std;

const int NMAX = 505;
const int divmax = 1005;

int N;
int A[NMAX];
int C[NMAX][divmax];

void citire()
{
	cin >> N;
	for(int i = 1 ; i <= N ; i++)
		cin >> A[i];
}

int cmmdc(int a, int b)
{
	int r;
	while(b)
	{
		r = a % b;
		a = b;
		b = r;
	}
	return a;
}

void dinamic()
{
	C[1][A[1]] = 1;
	for(int i = 2 ; i <= N ; i++)
	{
		for(int j = 1 ; j <= 1000 ; j++)
			C[i][j] = C[i - 1][j];
		for(int j = 1 ; j <= 1000 ; j++)
			C[i][cmmdc(j, A[i])] += C[i - 1][j];
	}
}

void scrie()
{
	printf("%d\n", C[N][1]);
}

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