您的位置:首页 > 其它

【51Nod】1284 2 3 5 7的倍数

2017-05-22 07:54 288 查看

题意

给出一个数N(1 <= N <= 10^18),求1至N中,有多少个数不是2 3 5 7的倍数。 例如N = 10,只有1不是2 3 5 7的倍数。

解题思路

容斥原理,先计算n/2+n/3+n/5+n/7,然后减去n/6+n/10+n/14+n/15+n/21+n/35,又得加上n/30+n/42+n/70+n/105,最后再减去n/210

参考代码

include <iostream>
using namespace std;
typedef long long ll;
int main(){
ll n;
while (cin>>n){
ll ans=n/2+n/3+n/5+n/7;
ans=ans-(n/6+n/10+n/14+n/15+n/21+n/35);
ans=ans+(n/30+n/42+n/70+n/105);
ans=ans-n/210;
cout<<n-ans<<endl;
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: