Pagini recente » Cod sursa (job #1862968) | Cod sursa (job #1992343) | Cod sursa (job #2731844) | Cod sursa (job #1307931) | Cod sursa (job #1723192)
#include<cstdio>
#define BASE 1000000
#define MAXDIGITS 50
#define MAXVAL 1010
using namespace std;
int answer[MAXVAL][MAXDIGITS],one[MAXDIGITS];
int gcd(int a,int b){
int r;
while(b>0){
r=a%b;
a=b;
b=r;
}
return a;
}
void Add(int a[MAXDIGITS],int b[MAXDIGITS]){
int i,c=0;
for(i=1;i<=a[0]||i<=b[0]||c>0;i++){
a[i]=a[i]+b[i]+c;
c=a[i]/BASE;
a[i]%=BASE;
}
a[0]=i-1;
}
int main(){
freopen("indep.in","r",stdin);
freopen("indep.out","w",stdout);
int n,i,j,x;
scanf("%d",&n);
one[0]=one[1]=1;
for(i=1;i<=n;i++){
scanf("%d",&x);
for(j=1;j<=1000;j++)
Add(answer[gcd(x,j)],answer[j]);
Add(answer[x],one);
}
printf("%d",answer[1][answer[1][0]]);
for(i=answer[1][0]-1;i>=1;i--)
printf("%.6d",answer[1][i]);
return 0;
}