AcWing 890. 能被整除的数
原题链接
简单
作者:
术
,
2021-03-24 12:16:09
,
所有人可见
,
阅读 154
#include <iostream>
using namespace std;
typedef long long LL;
const int M=20;
int p[M];
int main()
{
int n ,m;
cin>>n>>m;
for(int i=0;i<m;i++){
cin>>p[i];
}
int res=0;
for(int i=1;i<1<<m;i++){//从1开始i,不包括 一个也不选 的情况
int cnt=0,t=1;
for(int j=0;j<m;j++){
if(i>>j&1){
cnt++;
if((LL)t*p[j]>n){
t=-1;
break;
}
t=t*p[j];
}
}
//cout<<t<<endl;
//偶数个减,奇数个加
if(t!=-1&&cnt%2==1) res+=n/t;//n/t 是1-n中p的倍数的个数
else if(t!=-1&&cnt%2==0) res-=n/t;
}
cout<<res;
//cout << "Hello world!" << endl;
return 0;
}