Cod sursa(job #973070)

Utilizator Theorytheo .c Theory Data 13 iulie 2013 12:04:26
Problema Light2 Scor 80
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.76 kb
#include<iostream>
#include<fstream>
using namespace std;

ifstream in("light2.in");
ofstream out("light2.out");

long long n,sol,k,x[23];

inline long long gcd(long long a, long long b) {
    long long t;

    while(b) {
        t = a%b;
        a = b;
        b = t;
    }

    return a;
}

inline void rez(long long poz, long long el, long long op, long long pp) {
    long long i,t;

    for(i=poz+1;i<=k;++i) {
        t = el*x[i]/gcd(el,x[i]);
        sol += n/t*op*pp;
        rez(i, t, -op, 2*pp);
    }
}

int main() {
    int i;

    in >> n >> k;

    for(i=1;i<=k;++i)
        in >> x[i];

    for(i=1;i<=k;++i) {
        sol+=n/x[i];

        rez(i, x[i], -1, 2);
    }

    out << sol << "\n";

    return 0;
}