Pagini recente » Cod sursa (job #730729) | Cod sursa (job #43553) | Cod sursa (job #1808300) | Cod sursa (job #2910054) | Cod sursa (job #541767)
Cod sursa(job #541767)
#include <cstdio>
typedef long long LL;
const int KMAX=22;
LL N, ans;
char nr[1<<KMAX];
int K,d[KMAX],hash[37];
LL gcd(LL x, LL y) { return y != 0 ? gcd(y,x%y) : x; }
LL lcm(LL x, LL y) { return x/gcd(x, y)*y; }
void back(int k, LL retlcm, int nr)
{
if (retlcm > N) return;
if (k==K)
{
LL tmp = (N/retlcm)*(1LL<<(nr-1));
if (nr&1) ans+=tmp;
else ans-=tmp;
return;
}
back(k+1, retlcm, nr);
back(k+1, lcm(retlcm, d[k]), nr+1);
}
int main()
{
freopen("light2.in","r",stdin);
scanf("%lld",&N);
scanf("%d",&K);
for (int i=0;i<K;++i) scanf("%d", &d[i]);
back(0, 1, 0);
freopen("light2.out","w",stdout);
printf("%lld\n", ans);
return 0;
}