Pagini recente » Cod sursa (job #2090216) | Cod sursa (job #362729) | Cod sursa (job #739702) | Cod sursa (job #2955625) | Cod sursa (job #162108)
Cod sursa(job #162108)
#include <iostream>
#include <string>
#define FIN "indep.in"
#define FOUT "indep.out"
#define MAX_N 500
#define MAX_VAL 1000
using namespace std;
long long dyn[MAX_N+1][MAX_VAL+1];
int n;
int v[MAX_N+1];
void iofile(void){
freopen(FIN,"rt",stdin);
freopen(FOUT,"wt",stdout);
scanf("%d",&n);
for (int i=1,x;i<=n;i++){
scanf("%d",&x);
dyn[i][x]=1;
v[i]=x;
}
fclose(stdin);
return ;
}
int gcd(int a,int b){
int r;
while (b){
r=(a%b);
a=b;
b=r;
}
return a;
}
void dinamica(void){
for (int i=1;i<n;i++){
for (int j=1;j<=MAX_VAL;j++){if (dyn[i][j]){
dyn[i+1][j]+=dyn[i][j];
dyn[i+1][gcd(j,v[i+1])]+=dyn[i][j];
}
}}
printf("%lld\n",dyn[n][1]);
fclose(stdout);
return ;
}
int main(void){
iofile();
dinamica();
return 0;
}