Cod sursa(job #555214)

Utilizator R.A.RFMI Romila Remus Arthur R.A.R Data 15 martie 2011 12:41:34
Problema Light2 Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.85 kb
#include <fstream>
#define nmax 32

using namespace std;

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

long long i,nrcom,Sol,prod,N,cmc;
int K,V[nmax],nr,j,n_f;

long long cmmdc(long long a,long long b)
{
    long long r ;
    while(b)
    {
        r = a%b;
        a=b;
        b=r;
    }
    return a;
}

void back(int k,long long cmmmc)
{
    if(k==K+1)
        if(n_f)
            if(n_f&1)Sol+=(1<<(n_f-1))*(N/cmmmc);
            else Sol-=(1<<(n_f-1))*(N/cmmmc);
        else ;
    else
    {
        //nu folosesc V[k]
        back(k+1,cmmmc);
        //folosesc V[k]
        cmc = cmmdc(cmmmc,V[k]);
        cmmmc*=V[k];cmmmc/=cmc;
        n_f++;
        back(k+1,cmmmc);
        n_f--;
    }
}

int main()
{
    in>>N>>K;
    for(i=1;i<=K;i++)in>>V[i];
    back(1,1);
    out<<Sol;
    return 0;
}