Pagini recente » Cod sursa (job #2143177) | Istoria paginii runda/cerculdeinfo-lectia9-cuplaj_flux/clasament | Cod sursa (job #949291) | Cod sursa (job #2143422) | Cod sursa (job #1088271)
#include<fstream>
using namespace std;
ifstream f("indep.in"); ofstream g("indep.out");
short unu[201],v[501],C[1002][201],e[1001][1001];
typedef short Huge[201];
inline short cmmdc(short a, short b)
{ short 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]/10; A[i]%=10;}
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]) for (i=C[1][0]; i; i--) g<<C[1][i]; else g<<"0";
g<<'\n'; g.close(); return 0;
}