Cod sursa(job #1344483)

Utilizator iulianrotaruRotaru Gheorghe-Iulian iulianrotaru Data 16 februarie 2015 19:20:34
Problema Light2 Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.67 kb
#include<fstream>
#define ll long long
using namespace std;
ifstream f("light2.in"); ofstream g("light2.out");
int k,i,p,d[25],x[25];
ll n,nr,mc[25];
ll Euclid(ll a, ll b)
{   while(b) {ll r=a%b; a=b; b=r;};
    return a;
}
int main()
{   f>>n>>k;
    for(i=1;i<=k;++i) f>>d[i];
    p=1; mc[0]=1;
    while(p)
    {   ++x[p];
        if(x[p]<=k)
        {   mc[p]=(d[x[p]]/Euclid(d[x[p]],mc[p - 1]))*mc[p-1];
            if(mc[p]<=n)
            {   ll t=(n/mc[p])*(1LL<<(p-1));
                if(p%2) nr+=t;  else nr-=t;
                x[p+1]=x[p];
                ++p;
            }
        }
        else --p;
    }
    g<<nr<<'\n'; g.close(); return 0;
}