码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2017-09-01 12:49:01      阅读:139      评论:0      收藏:0      [点我收藏+]

标签:.com   ima   space   com   targe   bit   int   src   es2017   

 

技术分享

 

用容斥原理求出不满足条件的个数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的倍数 | 容斥原理

标签:.com   ima   space   com   targe   bit   int   src   es2017   

原文地址:http://www.cnblogs.com/kimsimple/p/7462609.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!