Pagini recente » Cod sursa (job #1560212) | Cod sursa (job #2321646) | Cod sursa (job #1916043) | Cod sursa (job #538745) | Cod sursa (job #1525114)
#include<stdio.h>
FILE *fin,*fout;
int n,k,po[23],a[23];
long long int sol;
long long int gcd(long long int a,long long int b)
{
long long int t;
while(b!=0)
{
t=a;
a=b;
b=t%b;
}
return a;
}
long long int scm(long long int a,long long int b)
{
return (a*b)/gcd(a,b);
}
void solve(int pas,int nr,long long int val)
{
if(val>n)
{
return;
}
if(pas>k)
{
if(nr%2==1)
{
sol+=po[nr-1]*(n/val);
}
else
{
sol-=po[nr-1]*(n/val);
}
}
else
{
solve(pas+1,nr,val);
solve(pas+1,nr+1,scm(a[pas],val));
}
}
int main()
{
fin=fopen("light2.in","r");
fout=fopen("light2.out","w");
fscanf(fin,"%d %d",&n,&k);
for(int i=1;i<=k;i++)
{
fscanf(fin,"%d",&a[i]);
}
po[0]=1;
for(int i=1;i<23;i++)
{
po[i]=po[i-1]<<1;
}
solve(1,0,1);
fprintf(fout,"%lld",sol);
}