Cod sursa(job #3245092)

Utilizator GabrielPopescu21Silitra Gabriel - Ilie GabrielPopescu21 Data 27 septembrie 2024 15:32:44
Problema Indep Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.03 kb
#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;
}