容斥原理

链接:https://www.nowcoder.com/acm/contest/75/G
来源:牛客网

题目描述

给出一个数n,求1到n中,有多少个数不是2 5 11 13的倍数。

输入描述:

本题有多组输入
每行一个数n,1<=n<=10^18.

输出描述:

每行输出输出不是2 5 11 13的倍数的数共有多少。
示例1

输入

15

输出

4

说明

1 3 7 9
#include <bits/stdc++.h>
using namespace std;

int main()
{
    long long n,a;
    while( ~scanf("%lld",&n)){
        a=n/2;
        a+=n/5;
        a+=n/11;
        a+=n/13;
        a-=n/10;
        a-=n/22;
        a-=n/26;
        a-=n/55;
        a-=n/65;
        a-=n/143;
        a+=n/2/5/11;
        a+=n/5/11/13;
        a+=n/2/11/13;
        a+=n/2/5/13;
        a-=n/2/5/11/13;
 
        printf("%lld\n",n-a);
    }
 
    return 0;
}

  

posted @ 2018-03-03 22:37  flyer_duck  阅读(174)  评论(0编辑  收藏  举报