链接:https://ac.nowcoder.com/acm/contest/321/A
来源:牛客网
题目描述
题目有点长,很多废话,我简写一下。
现在有1到10^9一共10^9个数字。 输入a,b,c三个素数,删除掉是a,b,c的倍数的数字,问还能剩下多少数字
输入描述:
第一行包含一个正整数T(T<200)
之后的T行每行包含3个正整数,a,b,c(2<=a,b,c<10^6;a!=b,b!=c,c!=a;保证a,b,c为素数)
输出描述:
输出T行
每行一个整数,还能剩下多少数字。
输入
3
2 3 5
5 7 11
13 2 3
输出
266666666
623376624
307692308
解题报告:
就一个公式,不解释了。n-n/a-n/b-n/c+n/(a*b)+n/(a*c)+n/(b*c)-n/(a*b*c)
不过要注意一下 a*b*c超出int范围,要用long long
代码
#include<algorithm>
#include <iostream>
#include<cstring>
#include <cstdio>
using namespace std;
typedef long long ll;
int main(){
ll n=1e9;
int t;
cin>>t;
while(t--){
ll a,b,c;
scanf("%lld%lld%lld",&a,&b,&c);
cout<<n-n/a-n/b-n/c+n/(a*b)+n/(a*c)+n/(b*c)-n/(a*b*c)<<endl;
}
return 0;
}