题解:

能被整除的数_#include


题解:

充斥原理,用二进制优化表示选和没选,选的质数个数为奇数的时候加入答案,偶数时候减去

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
ll p[20];
int main()
{
ll n,m;
cin>>n>>m;
ll ans=0;
for(int i=1;i<=m;i++) cin>>p[i];

for(int i=1;i<1<<m;i++)
{
ll t=1;
ll res=0;
for(int j=1;j<=m;j++)
{
if(i>>(j-1)&1)
{
if((ll)t*p[j]>n)
{
t=-1;
break;
}
res++;
t*=p[j];
}
}
if(t==-1) continue;
if(res&1) ans+=n/t;
else ans+=-n/t;
}
cout<<ans<<endl;
return 0;
}