个人认为容斥原理里理解是具象化的,但是落实到具体题目的代码是抽象的。理解了容斥原理但是,没有理解代码的可以看一下下面的博客
代码详解请点击以下博客:
https://blog.csdn.net/weixin_75185749/article/details/146514618?fromshare=blogdetail&sharetype=blogdetail&sharerId=146514618&sharerefer=PC&sharesource=weixin_75185749&sharefrom=from_link
代码如下(注释解释均在上述博客中):
include[HTML_REMOVED]
using namespace std;
typedef long long ll;
const int N=20;
int primes[N];
int main(){
int n,m;cin>>n>>m;
for(int i=0;i[HTML_REMOVED]>primes[i];
int res=0;
for(int i=1;i < 1<[HTML_REMOVED]>j&1){ //①
//②
if((ll)tprimes[j]>n){
t=-1;
break;
}
s++; //③
t=primes[j]; //①
}
}
if(t==-1)continue;
if(s&1)res+=n/t;
else res-=n/t;
}
cout<<res<<endl;
return 0;
}