Pagini recente » Cod sursa (job #305628) | Cod sursa (job #1298067) | Cod sursa (job #2409693) | Cod sursa (job #1396807) | Cod sursa (job #1110870)
#include <stdio.h>
#define fr(i,a,b) for(int i=a;i<b;++i)
#define rf(i,a,b) for(int i=b-1;i>=a;--i)
#define N 1000
#define M 10
#define MOD 1000000000
int gcd(int a,int b){return b?gcd(b,a%b):a;}
struct bign{
int s,a[M];
void print(){
if(!s){printf("0");return;}
printf("%i",a[s-1]);
rf(i,0,s-1) printf("%.9i",a[i]);
}
void one(){
s=a[0]=1;
}
}a[N+1];
void add(bign*a,bign*b){ //a+=b
if(b->s>a->s) a->s=b->s;
fr(i,0,b->s) a->a[i]+=b->a[i];
fr(i,0,a->s) if(a->a[i]>=MOD) a->a[i+1]+=a->a[i]/MOD,a->a[i]%=MOD;
if(a->a[a->s])++a->s;
}
int main(){
freopen("indep.in","r",stdin);
freopen("indep.out","w",stdout);
int n,x,m=0;
bign one;
one.one();
scanf("%i",&n);
fr(i,0,n){
scanf("%i",&x);
fr(i,1,m+1) add(a+gcd(i,x),a+i);
add(a+x,&one);
if(x>m)m=x;
}
a[1].print();
return 0;
}