简单的容斥原理

发布时间:2022-09-07 23:19:18
贴主:易向以归宁
热度:2
正在讨论:P1558 - 有几个偶数 题目传送门

易向以归宁 2022-09-07

大家一定听过这样一类问题:

班级里有 a 个同学喜欢语文,在这 a 个同学里,喜欢数学的有 b 个人,那么班里有多少个同学喜欢语文呢?

答案呼之欲出:那就是 a - b。

知道这个原理后,我们再来看这道题目:求区间 [a,b] 内有多少个偶数,其中题目规定 1 ≤ a ≤ b ≤ 1000000000。

换言之,本题是否可以转化为:计算区间 [1,b] 的偶数数量与区间 [1,a - 1] 的偶数数量之差?

进一步把该问题代码化:另 f(x) = 区间 [1,x] 的偶数数量,则本题答案为 f(b) - f(a - 1)。

到现在,我们只需要求从 1 到 x 中,有多少偶数就可以了。

那我们又知道,偶数都是 2 的倍数,也就是连续两个整数中,一定有一个是偶数。

所以我们只需要看 x 中有多少个 2,就可以知道 x 中有多少个偶数了,即 f(x) = x / 2。

(1)

Copyright 2016 - 2024 XUJC ACM Team
闽ICP备2020022076号-1