51nod 1284 2 3 5 7的倍数 | 容斥原理

Posted kimsimple

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了51nod 1284 2 3 5 7的倍数 | 容斥原理相关的知识,希望对你有一定的参考价值。

 

 

用容斥原理求出不满足条件的个数cnt,然后用n-cnt就得到答案了。

 

这里不满条件的数就是能整除2,3,5,7这些数的集合并集。要计算几个集合并集的大小,我们要先将所有单个集合的大小计算出来,然后减去所有两个集合相交的部分,再加回所有三个集合相交的部分,再减去所有四个集合相交的部分,依此类推,一直计算到所有集合相交的部分。

 

文章推荐:http://www.cppblog.com/vici/archive/2011/09/05/155103.html   

#include <iostream>
#include<bits/stdc++.h>

using namespace std;

int main()
{
    long long n,ans;
    scanf("%lld",&n);
    ans=n;
    ans-=(n/2+n/3+n/5+n/7);
    ans+=(n/6+n/10+n/14+n/15+n/21+n/35);
    ans-=(n/30+n/42+n/70+n/105);
    ans+=(n/210);
    cout<<ans<<endl;
}

 

以上是关于51nod 1284 2 3 5 7的倍数 | 容斥原理的主要内容,如果未能解决你的问题,请参考以下文章

51Nod 1284 2 3 5 7的倍数

51nod 1284 2 3 5 7的倍数

[51nod]1284 2 3 5 7的倍数

51nod 1284 2 3 5 7的倍数 | 容斥原理

51Nod 1248 2 3 5 7 的倍数 容斥

51nod1284容斥定理