Pagini recente » Cod sursa (job #1947417) | Cod sursa (job #1395976) | Cod sursa (job #1461328) | Cod sursa (job #1943244) | Cod sursa (job #1695481)
#include <cstdio>
using namespace std;
const int baza=1e6;
int n, mic[5], x,j, y, i , ans[1005][505], cmmdc[1005][1005],k;
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<=1000; ++i)
for(j=1; j<=1000; ++j)
if(!cmmdc[i][j])
{
for(k=1; i*k<=1000 && j*k<=1000; ++k)
cmmdc[i*k][j*k]=k;
}
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;
}