1. 程式人生 > >NOIP 2013初賽普及組C/C++答案詳解

NOIP 2013初賽普及組C/C++答案詳解

一、單選題

1 A

2 A
整數部分:1 * 21 + 1 * 20 = 3
小數部分:0 * 2-1 + 1 * 2-2 = 0.25
所以是答案是3.25

若是十制小數轉化為二進位制,以0.125為例

0.125 * 2 = 0.25   整數部分為0
0.25 * 2 = 0.5     整部分為0
0.5 * 2 = 1        整數部分為1

轉化為二進位制,要把上面整數部分按順序顯示在二進位制的小數中。
所以十制的0.125 = 二進位制的0.001

3 B

4 C
本題中,向下箭頭表示邏輯或 ||,向上箭頭表示邏輯與 &&,剩下一個符號表示邏輯非 !

A中,
若A為true,A || B = true,!A = false,true && false = false,結果一定為假
若A為false,A || B的值取決於B,!A = true。A || B && true,結果由B決定

B中,
若B為true,A || B = true, !B = false, (A | B) & (!B) = true && false = false,結果一定為假
若B為false,A || B = ?(取決於A),!B = true, (A || B) && (!B) = ? && true = ?,結果取決於A

C中,
若A為false,(A && B) || (!A && B) = (false && B) || (true && B) = false || B = B
若A為true,(A && B) || (!A && B) = (true && B) || (false && B) = B || false = B
可見A不管是真是假,其結果都取決於B。所以是正確答案。

D中,
若A為false, (A || B) & !A && B = B & true && B = B,結果取決於B
若A為true, (A || B) && !A && B = true && false && B = false,結果一定為假

5 D
A中,6 mod 11 = 17 mod 1 = 6,所以6和17會衝突。
B中,x2分別等於4,36,100,289,對11取模的結果為4, 3, 1, 3。衝突。
C中,2x分別為4, 12, 20, 34,對11取模的結果為4, 1, 9,1。衝突。
D中,x求根號並向下取整後,分別為1, 2,3,4,對11取模的結果為1, 2, 3,4

6 B

7 B

8 C

9 A
當二叉樹為滿二叉樹時,有最多的結點擁有兩個子節點。從圖中可以看出來,有4個節點擁有兩個子節點。

1-9.png

10 C

1-10.png

11 A

12 A
深度遍歷的話,A1和A3必然是先後遍歷的,A2不可能插在A1和A3之間。
本題有四種深度遍歷順序:
A0->A1->A3->A2
A0->A2->A1->A3
A0->A2->A3->A1
A0->A3->A1->A2

13 D
IPv4和IPv6中的4和6代表版本號,不代表位元組數。
IPv6是128位,IPv4是32位,這個要記憶。

14 A
關於時間複雜度,請先精讀《大話資料結構》第二章。
氣泡排序的平均時間複雜度是n * (n - 1) / 2,即O(n),具體請精讀《大話資料結構》第九章9.1~9.3
插入排序有兩種,一種是直接插入排序,平均時間複雜度是O(n2)。還有一種改良的插入排序,叫希爾排序,平均時間複雜度為O(nlog2n)~O(n2),這個只能估算。具體請精讀《大話資料結構》第九章9.5,9.6和P429
快速排序的平均時間複雜度是O(n*log2n),具體請精讀《大話資料結構》第九章9.9
基數排序

15 C

16 C

17 A

18 D
浮點數不是精確存諸,所以64位變32位後,變大變小不變都有可能。
被切掉的是右邊的32位。正負號由最左邊的那位數決定,所以不可能改變符號。

19 A

20 B

二、問題求解

1
思路:任選兩個人的組合數 - 兩個人挨在一起的組合數


>欲購完整答案請加微信307591841, 想了解小朋友學程式設計請加QQ群581357582。