Pagini recente » Cod sursa (job #1837344) | Cod sursa (job #1592387) | Cod sursa (job #808429) | Autentificare | Cod sursa (job #2095620)
#include <cstdio>
#define N 1010
#define L 30
int n;
int a[N][L];
const int baza = 100000000;
int unu[L];
inline int cmmdc(int a,int b) {
int r;
while(b!=0) {
r = a%b;
a = b;
b = r;
}
return a;
}
inline void adun(int a[L],int b[L]) {
int i = 1, t = 0;
for(; i<=a[0] || i<=b[0] || t!=0; ++i,t/=baza) {
t += a[i] + b[i];
a[i] = t%baza;
}
a[0] = i-1;
}
inline void scrie(int a[L]) {
printf("%d",a[a[0]]);
for(int i=a[0]-1; i>0; --i)
printf("%.8d",a[i]);
printf("\n");
}
int main() {
freopen("indep.in","r",stdin);
freopen("indep.out","w",stdout);
scanf("%d",&n);
int x;
unu[0] = unu[1] = 1;
for(int i=1; i<1001; ++i)
a[i][0] = 1;
for(int i=0; i<n; ++i) {
scanf("%d",&x);
for(int j=1; j<1001; ++j)
adun(a[cmmdc(x,j)],a[j]);
adun(a[x],unu);
}
scrie(a[1]);
return 0;
}