1e9个兵临城下 - 容斥原理
链接:https://ac.nowcoder.com/acm/problem/21772
题意:
给出三个素数A、B、C,求
[
1
,
1
e
9
]
[1, 1e9]
[1,1e9] 中不能被A整除,不能被B整除,也不能被C整除的整数的个数。
容斥原理:(
∣
A
∣
|A|
∣A∣表示集合A中的元素的个数)
两个集合:
∣
A
∪
B
∣
=
∣
A
∣
+
∣
B
∣
−
∣
A
∩
B
∣
|A\cup B|=|A|+|B|-|A\cap B|
∣A∪B∣=∣A∣+∣B∣−∣A∩B∣
三个集合:
∣
A
∪
B
∪
C
∣
=
∣
A
∣
+
∣
B
∣
+
∣
C
∣
−
∣
A
∩
B
∣
−
∣
A
∩
C
∣
−
∣
B
∩
C
∣
+
∣
A
∩
B
∩
C
∣
|A\cup B\cup C|=|A|+|B|+|C|-|A\cap B|-|A\cap C|-|B\cap C|+|A\cap B\cap C|
∣A∪B∪C∣=∣A∣+∣B∣+∣C∣−∣A∩B∣−∣A∩C∣−∣B∩C∣+∣A∩B∩C∣
Code:
#include <bits/stdc++.h>
using namespace std;
int main()
{
long long T, a, b, c, d = 1e9;
cin >> T;
while (T--)
{
cin >> a >> b >> c;
cout << d - (d / a + d / b + d / c - d / (a * b) - d / (a * c) - d / (b * c) + d / (a * b * c)) << endl;
}
return 0;
}