跳转至

NOIP 2007 普及组 小记

第 14 题

要计算 23|2^5,由于 ^ 运算符优先级高于 |,故先将 2 与 5 转换为二进制,并进行按异或运算:

\[ (0010)_2 \land (0101)_2 = (0111)_2 \\ (0111)_2 = (7)_{10} \]

同理,对 23 与 7 进行按位或运算:

\[ (0000\ 0111)_2\ |\ (0001\ 0111)_2 = (0001\ 0111)_2 \\ (0001\ 0111)_2 = (23)_{10} \]

因此,值为 23。

第 15 题

对于 !((a!=0)&&(b!=0)&&(c!=0)) 表达式,去除最外层括号并对内取非,得 (a == 0)||(b == 0)||(c == 0)

第 21 题

题目:将 \(n\) 个数 \((1, 2, \ldots, n)\) 划分成 \(r\) 个子集。每个数都恰好属于一个子集,任何两个不同的子集没有共同的数,也没有空集。将不同划分方法的总数记为 \(S(n, r)\)。例如,\(S(4, 2) = 7\),这 \(7\) 种不同的划分方法依次为 \(\{(1), (234)\},\{(2), (134)\},\{(3), (124)\},\{(4), (123)\},\{(12), (34)\}, \{(13), (24)\}, \{(14), (23)\}\)。 当 \(n = 6, r = 3\) 时,\(S(6, 3) = ?\) (提示:先固定一个数,对于其余的 \(5\) 个数考虑 \(S(5, 3)\)\(S(5, 2)\),再分这两种情况对原固定的数进行分析。)

我们先假设已知 \(n - 1\) 个球放置的情况数(\(S(n - 1, i)\)),如果如今要多加入一颗球,那么有两种情况:

  1. 将新加入的一颗球放入原来已有的“箱子”(即划分的一个数堆)中, 这种情境下情况数为 \(S(n - 1, r)*r\)

  2. 让新加入的球单独占一个“箱子”,余下 \(r - 1\) 个“箱子”来放其余的球,则情况数为 \(S(n - 1, r - 1)\)

由上可推出:

\[ S(n, r) = S(n - 1, r)*r + S(n - 1, r - 1) \]

接下来,根据以上信息,要求得 \(S(6, 3)\),我们需要得知 \(S(5, 3)\)\(S(5, 2)\) 的值,而不难发现,\(S(n, 1) = 1, S(n, n) = 1\),因此:

\[ S(3, 2) = S(2, 2)*2 + S(2, 1) = 1*2 + 1 = 3 \\ S(4, 3) = S(3, 3)*3 + S(3, 2) = 1*3 + 3 = 6 \]

又由于题目给出了 \(S(4, 2) = 7\),于是:

\[ S(5, 2) = S(4, 2)*2 + S(4, 1) = 7*2 + 1 = 15 \\ S(5, 3) = S(4, 3)*3 + S(5, 2) = 6*3 + 7 = 25 \]

最后,\(S(6, 3) = S(5, 3)*3 + S(5, 2) = 25*3 + 15 = 90\)

第 22 题

题目:某城市的街道是一个很规整的矩形网络(见下图),有 \(7\) 条南北向的纵街,\(5\) 条东西向的横街。现要从西南角的 \(A\) 走到东北角的 \(B\) ,最短的走法共有多少种?

07-29-1.png

首先,不难发现,无论如何走,最短的路径总是包含 \(6\) 条横街和 \(4\) 条纵街。也就是说,接下来,我们只需要考虑横纵街的不同互相搭配方式即可。

那么,答案则为 \(C\binom{4}{10} = 210\)(从十条街道中选出四条纵街)。

评论