Cod sursa(job #299792)

Utilizator ssergiussSergiu-Ioan Ungur ssergiuss Data 6 aprilie 2009 23:50:12
Problema Indep Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.79 kb
//#include<algorithm>
//using namespace std;
#include<stdio.h>

#define DIM 501
#define MAX 1000

int n,a[DIM];
long long sol[DIM][2*DIM];

int cmmdc(int a,int b){
    int r;

    do{
        r=a%b;
        a=b;
        b=r;}
    while(r);
    return a;}

void solve(){
    int i,j;

    scanf("%d",&n);
    for(i=1; i<=n; ++i)
        scanf("%d",&a[i]);
	for(i=1; i<=MAX; ++i)
		if(a[1]%i==0)
			sol[1][i]=1;
	for(i=2; i<=n; ++i)
		for(j=2; j<=MAX; ++j)
            sol[i][cmmdc(j,a[i])]=sol[i-1][j]+sol[i-1][cmmdc(j,a[i])];
	/*for(i=1; i<=n; printf("\n"),++i)
		for(j=1; j<=MAX; ++j)
			printf("%lld ",sol[i][j]);*/
	printf("%lld",sol[n][1]);}

int main(){

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

    solve();
    return 0;}