Pagini recente » Cod sursa (job #2895122) | Cod sursa (job #2738628) | Cod sursa (job #155867) | Cod sursa (job #155275) | Cod sursa (job #1695493)
#include <cstdio>
using namespace std;
const int baza=1e6;
int n, mic[50], x,j, y, i , ans[1005][50], k;
int cmmdc(int x,int y)
{
int r=x%y;
while(r) x=y, y=r, r=x%y;
return y;
}
void add(int a[], int b[])
{
int t=0, i;
for(i=1; i<=a[0] || i<=b[0] || t; ++i)
{
t+=a[i]+b[i];
a[i]=t%baza;
t/=baza;
}
a[0]=i-1;
}
int main()
{
freopen("indep.in", "r", stdin);
freopen("indep.out", "w", stdout);
scanf("%d", &n);
mic[0]=mic[1]=1;
for(i=1; i<=1000; ++i) ans[i][0]=1;
for(i=1; i<=n; ++i)
{
scanf("%d", &x);
for(j=1; j<=1000; ++j)
add( ans[cmmdc(x,j)] , ans[j] );
add(ans[x], mic);
}
printf("%d", ans[1][ans[1][0]] );
for(i=ans[1][0]-1; i; --i)
printf("%.6d", ans[1][i]);
printf("\n");
return 0;
}