Pagini recente » Cod sursa (job #2494755) | Cod sursa (job #2410851) | Cod sursa (job #435678) | Cod sursa (job #3293666) | Cod sursa (job #549585)
Cod sursa(job #549585)
#include<stdio.h>
#define ll long long
using namespace std;
ll n;
ll k;
ll D[23];
int L[23];
ll nr = 0;
void citire(void)
{
FILE *f = fopen("light2.in","r");
fscanf(f,"%lld %d",&n,&k);
for(long int i=1;i<=k;i++)
{
fscanf(f,"%d ",&D[i]);
nr += n/D[i];
}
fclose(f);
}
void afisare(int v)
{
for(int i=1;i<=v;i++)
printf("%d ",D[i]);
}
void calc(int a,ll prod,long int nri,int nri2)
{
if(!(nri%2)) nr -= (nri2*(n/prod));
else nr += (nri2*(n/prod));
for(int i=a+1;prod<n && i<=k;i++)
if(prod%D[i] != 0)
calc(i,prod*D[i],nri+L[i]+1,nri2+1);
}
int main()
{
FILE *f = fopen("light2.out","w");
citire();
nr = 0;
for(int i=1;i<=k;i++)
for(int j=1;j<=k;j++)
if(i!=j && D[i]%D[j] == 0)
{
nr -= n/D[i];
L[i] ++ ;
}
for(int i=1;i<=k;i++)
if(L[i]%2 == 0)
calc(i,D[i],1,1);
fprintf(f,"%d ",nr);
fclose(f);
return 0;
}