Cod sursa(job #1773785)

Utilizator Vali_DeaconuVali Deaconu Vali_Deaconu Data 8 octombrie 2016 11:05:23
Problema Indep Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.18 kb
#include <fstream>
#include <iostream>

using namespace std;

int a[510], x[1010], y[1010], b[1010];
int n, i, j, maxim, k, p, nr, e, sol;

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

    fin>>n;
    for (int i=1;i<=n; i++) {
        fin>>a[i];
        if (a[i] > maxim) {
            maxim = a[i];
        }
    }

    for (i=2;i<=maxim;i++) {
        j = 2;
        k = i;
        int ok = 1;
        nr = 0;
        while (k!=1) {
            e = 0;
            while (k%j == 0) {
                e++;
                k/=j;
            }
            if (e>=2) {
                ok = 0;
            }
            if (e == 1) {
                nr++;
            }
            j++;
        }
        if (ok) {
            x[++p] = i;
            y[p] = nr;
        }

    }
    /*
    for (i=1;i<=p;i++)
        cout<<x[i]<<" ";
    */
    for (i=1;i<=p;i++) {
        nr = 0;
        for (j=1;j<=n;j++)
            if (a[j]%x[i] == 0)
                nr++;
        if (y[i] % 2 == 1)
            sol += ((1<<nr)-1);
        else
            sol -= ((1<<nr)-1);
    }
    fout<<(1<<n)-1-sol;

    return 0;
}