Cod sursa(job #783462)

Utilizator ionut_blesneagIonut Blesneag ionut_blesneag Data 2 septembrie 2012 21:57:33
Problema Light2 Scor 40
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.7 kb
#include<cstdio>
using namespace std;

long long N,nr,d[30];
int K,i;

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 prelucreaza(int position, long long value, long long sign, long long multiplicity)
{long long cmmmc;
for(int j=position+1; j<=K; j++)
{cmmmc=(d[j]*value)/cmmdc(d[j],value);
nr+=(N/cmmmc)*sign*multiplicity;
prelucreaza(j,cmmmc,-sign,2*multiplicity);
}

}

int main()
{freopen("light2.in","r",stdin);
freopen("light2.out","w",stdout);
scanf("%d",&N);  scanf("%d",&K);
for(i=1; i<=K; i++)
  {scanf("%d",&d[i]);
   nr+=N/d[i];}
for(i=1; i<=K; i++)
  prelucreaza(i,d[i],-1,2);  
printf("%d",nr);   
return 0;}