Cod sursa(job #1240628)

Utilizator teoionescuIonescu Teodor teoionescu Data 11 octombrie 2014 19:47:37
Problema Light2 Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.61 kb
#include<fstream>
using namespace std;
ifstream in("light2.in");
ofstream out("light2.out");
typedef long long ll;
int K,d[25],v[25];
ll N,Sum;
ll cmmdc(ll a,ll b){
    if(!b) return a;
    return cmmdc(b,a%b);
}
ll cmmmc(ll a,ll b){
    return 1LL*a*b / cmmdc(a,b);
}
void back(int i,int sign,ll p){
    Sum+=(1LL<<(i-2))*sign*(N/p);
    if(i<=K){
        for(v[i]=v[i-1]+1;v[i]<=K;v[i]++){
            back(i+1,-sign,cmmmc(p,d[ v[i] ]));
            v[i+1]=0;
        }
    }
}
int main(){
    in>>N>>K;
    for(int i=1;i<=K;i++) in>>d[i];
    back(1,-1,1);
    out<<Sum<<'\n';
    return 0;
}