Cod sursa(job #1704913)

Utilizator refugiatBoni Daniel Stefan refugiat Data 19 mai 2016 16:20:09
Problema Light2 Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.8 kb
#include <iostream>
#include <fstream>
#define LL long long
using namespace std;
ifstream si("light2.in");
ofstream so("light2.out");
LL n;
int m;
LL nr[25];
LL sum=0;
LL cmmdc(LL a,LL b)
{
    LL r=a%b;
    while(r)
    {
        a=b;
        b=r;
        r=a%b;
    }
    return b;
}
LL cmmmc(LL a,LL b)
{
    return a*b/cmmdc(a,b);
}
void gen(int a,LL b,int c)
{
    b=cmmmc(b,nr[a]);
    ++c;
    if(c>n)
        return;
    if(c&1)
    {
        sum+=(1<<(c-1))*(n/b);
    }
    else
    {
        sum-=(1<<(c-1))*(n/b);
    }
    int i;
    for(i=a-1;i>=0;--i)
    {
        gen(i,b,c);
    }
}
int main()
{
    si>>n;
    si>>m;
    int i;
    for(i=0;i<m;++i)
    {
        si>>nr[i];
        gen(i,1,0);
    }
    so<<sum;
    so.close();
    return 0;
}