Pagini recente » Cod sursa (job #11737) | Cod sursa (job #2581972) | Cod sursa (job #1231066) | Cod sursa (job #782654) | Cod sursa (job #2923490)
#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};
dp[v[0]] = 1;
for(int i = 1;i < n;++i)
{
int tmp[1005];
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";
}