Pagini recente » Cod sursa (job #839673) | Cod sursa (job #1874939) | Cod sursa (job #68824) | Cod sursa (job #353879) | Cod sursa (job #3245090)
#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.empty()) return false;
int currentGCD = subset[0];
for (int i = 1; i < subset.size(); ++i) {
currentGCD = gcd(currentGCD, subset[i]);
if (currentGCD == 1) return true;
}
return currentGCD == 1;
}
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;
}