Cod sursa(job #1704398)

Utilizator refugiatBoni Daniel Stefan refugiat Data 18 mai 2016 18:54:36
Problema Light2 Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.84 kb
#include <iostream>
#include <fstream>
#define LL long long
using namespace std;
ifstream si("light2.in");
ofstream so("light2.out");
LL n;
LL 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 1ll*a*b/cmmdc(a,b);
}
void gen(LL poz,LL val,LL cont)
{
    if(cont&1)
    {
        sum+=1ll*cont*(n/val);
    }
    else
    {
        sum-=1ll*cont*(n/val);
    }
    //cout<<sum<<' '<<poz<<' '<<cont<<'\n';
    for(--poz;poz>=0;--poz)
    {
        gen(poz,cmmmc(val,nr[poz]),cont+1);
    }
}
int main()
{
    si>>n;
    si>>m;
    LL i;
    //cout<<cmmdc(4,6);
    for(i=0;i<m;++i)
    {
        si>>nr[i];
        gen(i,nr[i],1);
    }
    so<<sum;
    so.close();
    return 0;
}