51Nod1284--离散数学--排斥原理--循环超时

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

Input

输入1个数N(1 <= N <= 10^18)。

Output

输出不是2 3 5 7的倍数的数共有多少。

Sample Input

10
Sample Output

1
#include<iostream>//包含排斥原理 不被2,3,5,7整除 
#include<algorithm>
using namespace std;
int main(){
    long long int n;
    cin>>n;
    cout<<n-(n/2+n/3+n/5+n/7)+(n/6+n/15+n/21+n/10+n/35+n/14)-(n/30+n/42+n/70+n/105)+(n/210)<<endl; 
}
//cnt=n-(a+b+c+d)+(a*b+a*c+a*d+b*c+b*d+c*d)-(a*b*c+a*c*d+b*c*d)+(a*b*c*d); 


 

发布了73 篇原创文章 · 获赞 27 · 访问量 1255

猜你喜欢

转载自blog.csdn.net/queque_heiya/article/details/103772405