Pagini recente » Cod sursa (job #1120353) | Monitorul de evaluare | Cod sursa (job #1483764) | Monitorul de evaluare | Cod sursa (job #2465769)
#include<bits/stdc++.h>
#define maxVal 1010
#define maxCif 100
#define base 1000
using namespace std;
int n,i,j,x;
int dp[maxVal][maxCif],unu[maxCif];
void add(int a[maxCif],int b[maxCif])
{
int i,t=0;
for(i = 1;i <=a [0] || i <= b[0] || t > 0 ;i++)
a[i] = a[i] + b[i] + t,
t = a[i] / base,
a[i] %= base;
a[0] = i - 1;
}
int main()
{
freopen("indep.in","r",stdin);
freopen("indep.out","w",stdout);
scanf("%d",&n);
unu[0] = unu[1] = 1;
for(i=1;i<=n;i++)
{
scanf("%d",&x);
for(j= 1 ;j <= 1000 ; j++)
add(dp[__gcd(x,j)], dp[j]);
add(dp[x], unu);
}
printf("%d", dp[1][dp[1][0]]);
for(i= dp[1][0] - 1 ;i>=1 ;i--)
printf("%.3d",dp[1][i]);
return 0;
}