NOIP中的数学--第8课 容斥原理(一)

小学数学知识–容斥原理
容斥原理的题目都可以借助韦恩图这一工具来解决,并且非常快速与准确,
一、关于两个集合的容斥原理

集合 A 与B 的并集的元素个数,等于集合 A 的元素个数与集合B 的元素个数的和,减去集合A 与 B 的交的元素个数,即:|A∪B|=|A|+|B|-|A∩B|。
在这里插入图片描述
二、关于三个集合的容斥原理
三个圆A、B、C 分别表示具有三种不同性质的集合,并如图用M1、M2、M3、…、M7 表示由三个圆形成的内部互不重叠的部分所含元素的个数,可见:

|A∪B∪C|=M1+M2+…+M7=(M1+M4+M6+M7)+(M2+M4+M5+M7)+(M3+M5+M6+M7)-[(M4+M7)+(M5+M7)+(M6+M7)]+M7=|A|+|B|+|C|-|A∩B|-|B∩C|-|A∩C|+|A∩B∩C|
在这里插入图片描述
在这里插入图片描述
三、例题点拨

【例1】某班有38名学生,一次数学测验共有两道题,答对第一题的有26人,答对第二题的有24人,两题都答对的有17人,则两题都答错的人数是?()

A.3 B.5

C.6 D.7

【答案】B

【解析】本题为两集合容斥原理。设两题都答错的人数为x,根据两集合公式,A+B-AB=总个数-都不满足的个数,可得26+24-17=38-x,解得x=5。因此,本题选B。

【例2】某专业有学生50人,现开设有甲、乙、丙三门必修课。有40人选修甲课程,36人选修乙课程,30人选修丙课程,兼选甲、乙两门课程的有28人,兼选甲、丙两门课程的有26人,兼选乙、丙两门课程的有24人,甲、乙、丙三门课程均选的有20人,问三门课程均未选的有多少人?( )

A.1人B.2人

C.3人D.4人

【答案】B

【解析】本题为三集合容斥原理公式1。设三门课均为选的人数为x,根据三集合公式A+B+C-AB-BC-AC+ABC=总个数-都不满足的个数,可得40+36+30-28-26-24+20=50-X,解得X=2。因此选择B选项。

【例3】某乡镇举行运动会,共有长跑、跳远和短跑三个项目。参加长跑的有49人,参加跳远的有36人,参加短跑的有28人,只参加其中两个项目的有13人,参加全部项目的有9人。那么参加该次运动会的总人数为?()

A.75 B.82

C.88 D.95

【答案】B

【解析】本题为三集合容斥原理公式2,根据三集合公式A+B+C-只满足两个条件的个数-2×满足三个条件的个数=总个数-都不满足的个数,可得参加运动会的总人数为49+36+28-13-9×2=82人。选择B选项。

知识扩展

例题

越狱
【问题分析】
设全集U为所有可能的关押状态所构成的集合,A为所有可能发生越狱的关押状态所构成的集合,那么CuA所有不可能越狱的关押状态所构成的集合。由于|U|=|A|+|CuA|,因此要求|A|。只要求出|U|、|CuA|即可。
再根据乘法原理可知|A|=mn-m(m-1)n-1.使用快速幂计算即可。
时间复杂度O(logn)
【参考代码】

#include<bits/stdc++.h>
using namespace std;
int qpow(int b,long long e)
{
	int ans = 1;
	while(e)
	{
		if(e&1)
		{
			ans = 1ll*ans*b%100003;
		}
		b=1ll*b*b%100003;
		e>>=1;
	}
	return ans;
}
int main()
{
	long long n,m;
	cin>>m>>n;
	int all = qpow(m,n);
	int no=1ll*m*qpow(m-1,n-1)%100003;
	int ans = (all - no)%100003;
	if(ans<0) ans+=100003;//由于取模的原因可能导致ans<0
	cout<<ans<<endl;
	return 0; 
}
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

信奥教练Andy

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值