Cod sursa(job #2465436)

Utilizator CyborgSquirrelJardan Andrei CyborgSquirrel Data 30 septembrie 2019 09:48:17
Problema Indep Scor 5
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.01 kb
#include <iostream>
#include <fstream>
#include <vector>
#include <stack>

using namespace std;

ifstream fin("indep.in");
ofstream fout("indep.out");

int gcd(int a, int b){
    if(a == 0){
        return b;
    }
    return gcd(b%a, a);
}

int n;
vector<int> num;

int sol = 0;
vector<int> pa;
void susta(int p = 0, bool dank = true){
    if(pa.size() >= 2 && dank){
//        for(auto a : pa){
//            cout << num[a] << " ";
//        }
//        cout << "\n";
        sol++;
    }
    if(p < n){
        int fml = num[p];
        for(int i = 0; i < pa.size(); i++){
            fml = gcd(fml, num[pa[i]]);
        }
        if(pa.size() == 0 || fml == 1){
            pa.push_back(p);
            susta(p+1, true);
            pa.pop_back();
        }
        susta(p+1, false);
    }
}

int main(){
    int a;
    fin >> n;
    for(int i = 0; i < n; i++){
        fin >> a;
        num.push_back(a);
    }
    
    susta();
    
    fout << sol;
    return 0;
}