Pagini recente » Cod sursa (job #250594) | Cod sursa (job #635111) | Istoria paginii runda/hoata/clasament | Cod sursa (job #2576227) | Cod sursa (job #1088292)
#include<fstream>
using namespace std;
ifstream f("indep.in"); ofstream g("indep.out");
const int BASE=1000000000;
int unu[201],v[501],c[1002][201],e[1001][1001];
typedef int Huge[201];
inline int cmmdc(int a, int b)
{ int r;
while(b) r=a%b, a=b, b=r;
return a;
}
void add(Huge A, Huge B)
{ int i,T=0;
if(B[0]>A[0])
{ for(i=A[0]+1;i<=B[0];) A[i++]=0;
A[0]=B[0];
}
else for (i=B[0]+1;i<=A[0];) B[i++]=0;
for(i=1;i<=A[0];i++) {A[i]+=B[i]+T; T=A[i]/BASE; A[i]%=BASE;}
if(T) A[++A[0]]=T;
}
int main()
{ int n,i,j;
f>>n;
unu[0]=unu[1]=1;
for(i=1;i<=n;++i) f>>v[i];
for(i=1;i<=1000;++i) for(j=i;j<=1000;++j) e[i][j]=e[j][i]=cmmdc(i,j);
for(i=1;i<=n;++i)
{ for(j=1;j<=1000;j++) add(c[e[v[i]][j]],c[j]);
add(c[v[i]],unu);
}
if(c[1][0])
{ g<<c[1][c[1][0]];
for(i=c[1][0]-1;i;i--)
{ if(c[1][i]<10) g<<"00000000";
else if(c[1][i]<100) g<<"0000000";
else if(c[1][i]<1000) g<<"000000";
else if(c[1][i]<10000) g<<"00000";
else if(c[1][i]<100000) g<<"0000";
else if(c[1][i]<1000000) g<<"000";
else if(c[1][i]<10000000) g<<"00";
else if(c[1][i]<100000000) g<<"0";
g<<c[1][i];
}
}
else g<<"0";
g<<'\n'; g.close(); return 0;
}