Pagini recente » Cod sursa (job #928300) | Cod sursa (job #1469762) | Cod sursa (job #1096691) | Cod sursa (job #143161) | Cod sursa (job #1125709)
#include <iostream>
#include <fstream>
#define DN 505
#define cfr 300
#define LL long long
using namespace std;
int dp[DN+DN][cfr],v[DN],unu[cfr];
int BASE = 1000 * 1000 * 1000;
/// dp[j] = nr de subsiruri divizibile cu j
inline int cmmdc(int a,int b){
int c;
for(;b;){
c=a%b;
a=b;
b=c;
}
return a;
}
void sum(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%BASE;
t/=BASE;
}
A[0] = i - 1;
}
int main()
{
int n;
freopen("indep.in","r", stdin);
freopen("indep.out","w", stdout);
scanf("%d",&n);
unu[0] = 1; unu[1] = 1;
for(int i=1;i<=n;++i){
int x;
scanf("%d",&x);
for(int j=1;j<=1000;++j)
sum( dp[cmmdc(j,x)] , dp[j]);
sum(dp[x],unu);
}
//g<<dp[1];
printf("%d",dp[1][ dp[1][0] ]);
for(int i=dp[1][0]-1;i>=1;--i)
printf("%.9d",dp[1][i]);
return 0;
}