Cod sursa(job #1088186)

Utilizator enedumitruene dumitru enedumitru Data 20 ianuarie 2014 11:45:17
Problema Indep Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.69 kb
#include<fstream>
using namespace std;
ifstream f("indep.in"); ofstream g("indrep.out");
int v[501],C[1002][501],unu[2]={1,1};
int cmmdc(int a, int b)
{   int r;
    while(b) r=a%b, a=b, b=r;
    return a;
}
void add(int A[], int B[])
{     int i,t=0;
      if(!A[0] && !B[0]) return ;
      for (i=1; i<=A[0] || i<=B[0] || t; i++, t/=10)
              A[i]=(t+=A[i]+B[i])%10;
      A[0]=i-1;
}
int main()
{	int n,i,j,t;
	f>>n;
	for(i=1;i<=n;++i) f>>v[i];
	for(i=1; i<=n; i++)
    {   for (j=1; j<=1000; j++) {t=cmmdc(v[i],j); add(C[t],C[j]);}
        add(C[v[i]],unu);
    }
	if(C[1][0])
			for (i=C[1][0]; i>=1; i--) g<<C[1][i];
		else g<<0;
	g<<'\n'; g.close(); return 0;
}