Pagini recente » Cod sursa (job #111350) | Cod sursa (job #200524) | Cod sursa (job #2362649) | Cod sursa (job #585963) | Cod sursa (job #1233364)
#include <cstdio>
using namespace std;
long long v2[30],n,sol;
int v[30],v1[30],m,i,k,nr;
long long cmmmc(long long a,long long b)
{
if(a==0) a=1;
if(b==0) b=1;
long long x=a*b,r=a%b;
while(r)
{
a=b;b=r;
r=a%b;
}
return x/b;
}
int main()
{
freopen("light2.in", "r", stdin);
freopen("light2.out", "w", stdout);
scanf("%lld%d",&n,&m);
for(i=1;i<=m;i++) scanf("%d",&v[i]);
k=m;
sol+=n/v[m];
v1[m-1]=1;
v2[++nr]=v[m-1];
while(k)
if(k==m)
{
if(nr%2) sol+=(n/v2[nr])*nr-(n/cmmmc(v2[nr],v[k]))*(nr+1);
else sol-=(n/v2[nr])*nr-(n/cmmmc(v2[nr],v[k]))*(nr+1);
k--;
}
else
{
if(v1[k]==0)
{
v1[k]=1;
v2[++nr]=cmmmc(v2[nr-1],v[k]);
k=m;
}
else
{
v1[k]=0;
nr--;
k--;
}
}
printf("%lld",sol);
return 0;
}