Pagini recente » Cod sursa (job #1345605) | Cod sursa (job #662533) | Cod sursa (job #58998) | Cod sursa (job #1452420) | Cod sursa (job #1614221)
#include <fstream>
#include <algorithm>
#include <cstring>
using namespace std;
ifstream in("indep.in");
ofstream out("indep.out");
const int N = 505;
const int VMAX = 1005;
int v[N];
int dp[VMAX], dp_last[VMAX];
int gcd(int a, int b) {
if(b == 0) return a;
return gcd(b, a % b);
}
int main() {
int n, i, j, curr_gcd;
in >> n;
for(i = 1; i <= n; i++) {
in >> v[i];
}
for(i = 1; i <= n; i++) {
for(j = 1; j < VMAX; j++) {
dp[j] = dp_last[j];
}
dp[v[i]]++;
for(j = 1; j < VMAX; j++) {
curr_gcd = gcd(v[i], j);
dp[curr_gcd] += dp_last[j];
}
for(j = 1; j < VMAX; j++) {
dp_last[j] = dp[j];
}
}
out << dp[1] << '\n';
return 0;
}