Pagini recente » Cod sursa (job #1824986) | Cod sursa (job #2053580) | Cod sursa (job #1458461) | Cod sursa (job #407626) | Cod sursa (job #549838)
Cod sursa(job #549838)
#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)
{
if(prod<=n)
if(!(nri%2))
{
nr -= (nri*(long long)(n/prod));
// printf("-%d*%d \n",nri,prod);
}
else if(nri>1)
{
nr += (nri+1)*(n/prod);
// printf("%d*%d \n",nri,prod);
}
for(int i=a+1;prod<n && i<=k;i++)
calc(i,prod*D[i],nri+1);
}
int main()
{
FILE *f = fopen("light2.out","w");
citire();
for(int i=1;i<=k;i++)
for(int j=1;j<=k;j++)
if(i!=j && D[i]%D[j] == 0)
L[i] ++;
for(int i=1;i<=k;i++)
calc(i,D[i],1);
fprintf(f,"%d ",nr);
fclose(f);
return 0;
}