容斥:别数重了
约 10 分钟
班里喜欢数学的排一队、喜欢语文的排一队,有些人两样都爱,就同时站进了两队,被数了两次。想知道"至少喜欢一样"的总人数,先把两队人数加起来,再减掉"两样都爱"、重复算的那部分。
#include <iostream>
using namespace std;
int main() {
int math = 20, chinese = 15, both = 8;
cout << math + chinese - both << endl; // 输出 27
return 0;
}
注意:直接算 20+15=35 就错了,因为那 8 个人被算了两次。凡是"两边都属于"的部分,都要记得减掉一次。
小纸条
20 人喜欢数学,15 人喜欢语文,8 人两样都喜欢,至少喜欢一样的有几人?
登录 后可看答案