Cod sursa(job #987321)

Utilizator mitrutstrutMitrea Andrei Ionut mitrutstrut Data 20 august 2013 13:53:20
Problema Light2 Scor 80
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.82 kb
#include <cstdio>
 
int K, nr, i, j;
long long N, D[22], sol;
 
long long cmmdc(long long a, long long b)
{
     long long r = a % b;
     while (r)
     {
           a = b;
           b = r;
           r = a % b;
     }
           
     return b;
}
 
void back(long long t, int lvl, int p)
{
     if (lvl == K) return;
      
     back(t, lvl+1, p);
      
     t = t * D[lvl] / cmmdc(t, D[lvl]);
      
     if (p & 1) sol += N / t * (1<<(p-1));
           else sol -= N / t * (1<<(p-1));
 
     back(t, lvl+1, p+1);
}
 
int main()
{
    freopen("light2.in","r",stdin);
    freopen("light2.out","w",stdout);
     
    scanf("%lld", &N);
    scanf("%d", &K);
    for (i=0; i<K; ++i)
        scanf("%d", &D[i]);
     
    back(1, 0, 1);
         
    printf("%lld\n", sol);
     
    return 0;
}