Cod sursa(job #3245090)

Utilizator GabrielPopescu21Silitra Gabriel - Ilie GabrielPopescu21 Data 27 septembrie 2024 15:30:33
Problema Indep Scor 10
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.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;
}