Pagini recente » Cod sursa (job #2945829) | Cod sursa (job #1897336) | Cod sursa (job #1908215) | Cod sursa (job #3231557) | Cod sursa (job #2923492)
#include <bits/stdc++.h>
using namespace std;
int gcd(int a, int b)
{
if(!b)
return a;
return gcd(b, a % b);
}
int solve(const vector<int>& v)
{
int n = v.size();
int dp[1005] = {0}, tmp[1005];
for(int i = 0;i < n;++i)
{
for(int j = 1;j <= 1000;++j)
tmp[j] = dp[j];
for(int j = 1;j <= 1000;++j)
{
int gc = gcd(v[i], j);
tmp[gc] += dp[j];
}
++tmp[v[i]];
for(int j = 1;j <= 1000;++j)
dp[j] = tmp[j];
}
return dp[1];
}
int main() {
freopen("indep.in", "r", stdin);
freopen("indep.out", "w", stdout);
int n;
cin >> n;
vector<int> v(n);
for(int i = 0;i < n;++i)
cin >> v[i];
cout << solve(v) << "\n";
}