Cod sursa(job #777187)

Utilizator misinozzz zzz misino Data 11 august 2012 13:24:09
Problema Indep Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.99 kb
#include<fstream>
#include<algorithm>
using namespace std;
ifstream f("indep.in");
ofstream g("indep.out");
int v,n,i,j,maxi,a[1010][210];
int gcd(int a,int b)
{if(b==0)
	return a;
else
	return gcd(b,a%b);
}
void suma(int p1,int p2)
{int i,t=0,y;
for(i=1;i<=a[p1][0]||i<=a[p2][0]||t;++i)
{y=a[p1][i]+a[p2][i]+t;
a[p1][i]=y%1000000000;
t=y/1000000000;
}
a[p1][0]=i-1;
}
int main()
{f>>n;
a[0][0]=a[0][1]=1;
for(i=1;i<=n;++i)
{f>>v;
maxi=max(v,maxi);
for(j=1;j<=maxi;++j)
	suma(gcd(v,j),j);
suma(v,0);
}
if(a[1][0]==0)
	a[1][0]++;
g<<a[1][a[1][0]];
for(i=a[1][0]-1;i>=1;--i)
{g.precision(9);
if(a[1][i]<1000000000)
	g<<"0";
else
if(a[1][i]<100000000)
	g<<"00";
else
if(a[1][i]<10000000)
	g<<"000";
else
if(a[1][i]<1000000)
	g<<"0000";
else
if(a[1][i]<100000)
	g<<"00000";
else
if(a[1][i]<10000)
	g<<"000000";
else
if(a[1][i]<1000)
	g<<"0000000";
else
if(a[1][i]<100)
	g<<"00000000";
else
if(a[1][i]<10)
	g<<"000000000";
g<<a[1][i];
}
g<<'\n';
return 0;
}