2009提高組初賽講解
2009NOIP提高組初賽
題解 – by L_Y_T
一.單項選擇題
1.C
A.世界上最早的計算機是1946年美國的ENIAC
B&C&D.1936年,圖靈提出了一種新的計算模型—圖靈機
2.A
BIOS <==> “Basic Input Output System” ,基本輸入輸出系統
3.D
j的二進位制編碼為 =
= 4 … 10 , = 0 … 4 , 所以16進位制就是4 10(A) 了
4.B
來下定義:
原碼:在用二進位制原碼錶示的數中 , 符號位為0 表示正數 , 符號位為1 表示負數 , 其餘各位表示數值部分 .
反碼:反碼的定義如下 : ⑴ 對於正數,它的反碼錶示與原碼相同。即 = ⑵對於負數,則除符號位仍為“ 1” 外,其餘各位“ 1” 換成” 0” ,**” 0” 換成1” **,即得到反碼 [X] 反。例如=10010110 。
(3)對於0,有兩種表示: =000…0 , = 111…1 ;
補碼:正數的補碼就是該數本身
即 : = 01100100
負數:兩頭的1不變,中間取反
當然,你也可以用這個結論
即: == 11011100
嗯…有一點注意一下:0只有一個補數
由補碼的定義可知: 與其10進位制真值的關係為 $2^{16} + X = (1111111111101101)_2 $ ,解得: = .
5.m層滿k二叉樹有 個節點,非葉節點有個,葉節點有 個, =
6.字尾表示式的主要特點是左右根,根節點有表示符號,左右兩邊石獅子或數字
表示式有字首表示式,中綴表示式和字尾表示式
中綴表示式就是我們平常看的式子:舉個栗子: 就是最普通的式子
字首表示式:運算子在運算元之前
我們把上面的式子轉一下:
將中綴表示式轉換為字首表示式步驟: 講解
(1) 初始化兩個棧:運算子棧和儲存中間結果的棧;
(2) 從右至左掃描中綴表示式;
(3) 遇到運算元時,將其壓入;
(4) 遇到運算子時,比較其與棧頂運算子的優先順序:
() 如果為空,或棧頂運算子為右括號“)”,則直接將此運算子入棧;
(4) 否則,若優先順序比棧頂運算子的較高或相等,也將運算子壓入;
() 否則,將棧頂的運算子彈出並壓入到中,再次轉到()與中新的棧頂運算子相比較;
(5) 遇到括號時:
() 如果是右括號“)”,則直接壓入;
() 如果是左括號“(”,則依次彈出棧頂的運算子,並壓入,直到遇到右括號為止,此時將這一對括號丟棄;
(6) 重複步驟(2)至(5),直到表示式的最左邊;
(7) 將中剩餘的運算子依次彈出並壓入;
(8) 依次彈出S2中的元素並輸出,結果即為中綴表示式對應的字首表示式。
7.B
Huffman編碼不允許一個編碼是另一個的字首
8.A
這道題硬將也不行吧
9.A
prim演算法是指從起點開始,每次找與當前節點距離最短的節點進行擴充套件,已經被擴充套件的節點不在擴充套件
然而,我是直接看的克魯斯卡爾…所以prim我並不會
10.C
二.不定項選擇
11.AB Intel最早發明的是微處理器,位數只能說明處理的字長,所在的系統硬體不同,速度很難說誰快. 12.BD RAM的位置不是隨機,而是隨時訪問.快取記憶體和暫存器的物理實現是整合在CPU中. 13.BC 多工系統可以是單個CPU構架的,普通的PC都是多工的.而且作業系統不是都是免費的. 14.C 網路協議分層不是為了相容,而是根據網路的分層模型來的.新的IPv6是IPv4的升級.必須要有IP地址才能進入網際網路. 15.BD HTML沒有統一編碼.本網站頁面間也可以用超連結. 16.ABD 畫個圖就看出來了…嗯?!不用我畫吧!!..算了,我還是一畫吧!!.. 手繪圖…說實話怪醜 但是可以判斷,ABD是對的,C是錯的了吧… 17.AC 連結串列的常識題… 不會的話自己動手試試也行了… 18.ABC 按照題意,求出26%11=4(這裡的’='不是賦值) ,以此類推,得出那幾個數求出的"雜湊值"為4,3,6,5,8,7,4 . 5有可能為26,59. 7可能為36,38,72,59. 9有可能為26,38,72,18,8,59. 19.ABCD 希爾排序,快排,直接選擇排序,堆排都是不問定的 20.ACD 嗯…我咋感覺B項挺好的啊…
三.問題求解
1.432
可以看出有兩個DAG.(把圖片插過來先)
1一定是序列的第一個點,接下來是2和5,因為5後面沒有連線的數字,所以們先考慮2.然後是3,然後是4(或7),6要在4和7後,根據乘法原理1,2,3,4,6,7,只有2中派發,分別是和 吧5排在1的後面,共有6個位置,則有 中.再講8和9插入其中,共有
原因嘛…畫個圖就知道了…但我不想畫
所以,共有1236=432
2.35
10015化成7進位制是,正常是47+1=29張面額的,1張面額的,和2張面額的,以及5張面額的~~(我有毒吧)~~.這樣,我們可以找數值大於4的,並用7-a的方法來找零這樣,總數就是29+2+1+(1+7-5)=35張.
閱讀程式
1.這道題是一道gcd
2.模擬.tmp = 1 時,a,b的陣列的值分別為2,5,26,92和94,8,49,33.然後將每一位的各位相加後再相乘.
3.求楊輝三角的第n行.
4.將分數化為小數.
ans : 3 , 5850 , 487 , 0.(384615)
完善程式
只提供答案
1.
(1) 0
(2) ans == tmp + a[i]
(3) <0
(4) i
(5) tmp += a[i]
2.
(1) now <= maxnum
(2) second - first
(3) (ans - 1)
(4) hash[first] >= ans
(5) ok
(6) work(0)
PS:答案不唯一(當然也有唯一的)