Cod sursa(job #1220868)

Utilizator mihai995mihai995 mihai995 Data 18 august 2014 19:05:25
Problema Light2 Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.98 kb
#include <fstream>
using namespace std;

const int N = 23, Vmax = 1 + 1e6;

int vals[N];
bool use[Vmax];

inline long long abs(long long a){
    return a > 0 ? a : -a;
}

inline long long cmmdc(long long a, long long b){
    return b != 0 ? cmmdc(b, a % b) : a;
}

inline long long cmmmc(long long a, long long b){
    return a / cmmdc( abs(a) , abs(b) ) * b;
}

long long pie(int poz, long long step, long long n, int nr){
    if (poz == vals[0] + 1)
        return n / step * nr;
    return pie(poz + 1, step, n, nr) + pie(poz + 1, cmmmc(step, vals[poz]), n, nr + 1);
}

int main(){
    ifstream in("light2.in");

    long long n;
    int nr, x;

    in >> n >> nr;
    while (nr--){
        in >> x;
        use[x] = !use[x];
    }

    in.close();

    for (int i = 1 ; i <= Vmax ; i++)
        if (use[i])
            vals[ ++vals[0] ] = -i;

    ofstream out("light2.out");
    out << pie(1, -1, n, 0) << '\n';
    out.close();

    return 0;
}