Cod sursa(job #588189)

Utilizator cocoshilaClaudiu cocoshila Data 7 mai 2011 10:50:02
Problema Indep Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.8 kb
#include <stdio.h>

const int A=1010;
const int B=30;
int nr;
int v[A][B];
const int baza = 100000000;
int unu[B];

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

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

void adn(int v[B],int b[B]) 
{
	int i=1,t=0;
	for(; i<=v[0] || i<=b[0] || t!=0; ++i,t=t/baza) 
	{
		t+=v[i]+b[i];
		v[i]=t%baza;
	}
	v[0]=i-1;
}

void scr(int v[30])
{
	printf("%d",v[v[0]]);
	for(int i=v[0]-1;i>0;--i)
		printf("%.8d",v[i]);
}

int main() {
	freopen("indep.in","r",stdin);
	freopen("indep.out","w",stdout);
        scanf("%d",&nr);
	int x;
	unu[0]=1;
	unu[1]=1;
	for(int i=1;i<1001;++i)
		v[i][0] = 1;
	for(int i=0;i<nr;++i) {
		scanf("%d",&x);
	for(int j=1;j<1001;++j)
		adn(v[cmmdc(x,j)],v[j]);
		adn(v[x],unu);
	}
	scr(v[1]);
	return 0;
}