Cod sursa(job #162104)

Utilizator vanila_CPPIonescu Victor Cristian vanila_CPP Data 19 martie 2008 14:43:17
Problema Indep Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.74 kb
#include <iostream>
#include <string>
#define FIN "indep.in"
#define FOUT "indep.out"
#define MAX_N 500
#define MAX_VAL 1000
using namespace std;
int dyn[MAX_N+1][MAX_VAL+1];
int n;
int v[MAX_N+1];


void iofile(void){
	freopen(FIN,"rt",stdin);
	freopen(FOUT,"wt",stdout);
	scanf("%d",&n);
	for (int i=1,x;i<=n;i++){
		scanf("%d",&x);
		dyn[i][x]=1;
		v[i]=x;
	}
	fclose(stdin);
	return ;
}


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


void dinamica(void){
	for (int i=1;i<n;i++){
		for (int j=1;j<=MAX_VAL;j++){if (dyn[i][j]){
				dyn[i+1][j]+=dyn[i][j];
				dyn[i+1][gcd(j,v[i+1])]+=dyn[i][j];
		}
	}}
	printf("%d\n",dyn[n][1]);
	fclose(stdout);
	return ;
}

int main(void){
	iofile();
	dinamica();
	return 0;
}