Pagini recente » Cod sursa (job #13425) | Cod sursa (job #1873299) | Cod sursa (job #767967) | Cod sursa (job #642276) | Cod sursa (job #3245092)
#include <bits/stdc++.h>
using namespace std;
int gcd(int a, int b) {
while (b != 0) {
int r = a % b;
a = b;
b = r;
}
return a;
}
bool isIndependent(const vector<int>& subset) {
if (subset.size() < 2) return true;
int maxElem = *max_element(subset.begin(), subset.end());
for (int num : subset) {
if (num != maxElem && gcd(maxElem, num) != 1) {
return false;
}
}
return true;
}
int main() {
ifstream fin("indep.in");
ofstream fout("indep.out");
int N;
fin >> N;
vector<int> A(N);
for (int i = 0; i < N; ++i) {
fin >> A[i];
}
int count = 0;
for (int mask = 1; mask < (1 << N); ++mask) {
vector<int> subset;
for (int i = 0; i < N; ++i) {
if (mask & (1 << i)) {
subset.push_back(A[i]);
}
}
if (isIndependent(subset)) {
count++;
}
}
fout << count << endl;
return 0;
}