链接:https://www.nowcoder.net/acm/contest/75/G
来源:牛客网
题目描述
给出一个数n,求1到n中,有多少个数不是2 5 11 13的倍数。
输入描述:
本题有多组输入 每行一个数n,1<=n<=10^18.
输出描述:
每行输出输出不是2 5 11 13的倍数的数共有多少。
求出是 2 5 11 13 的倍数的数的个数,然后减一下
#include <iostream>
#include <string.h>
#include <stdio.h>
using namespace std;
#define LL long long
LL n;
LL f(LL x) {return n/x;}
int main()
{
//容斥
int a = 2, b = 5, c = 11, d = 13;
while(scanf("%lld",&n)!=EOF){
printf("%lld\n",n - f(a) - f(b) - f(c) - f(d) + f(a*b) + f(a*c) + f(a*d) + f(b*c) + f(b*d) + f(c*d) - f(a*b*c) - f(a*b*d) - f(a*c*d) - f(b*c*d) + f(a*b*c*d));
}
return 0;
}