Cod sursa(job #2923492)

Utilizator bent_larsenSturzu Antonio-Gabriel bent_larsen Data 14 septembrie 2022 20:29:48
Problema Indep Scor 20
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.67 kb
#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";
}