1.清華計算機系研究所學生考試上機07年試題解答(自己今天上午做的,有一個不能完成所有測試用例~)
清華大學計算機科學與技術系
2007 年碩士研究所學生招生複試
2007 年 3 月 24 日
注意事項:
1. 試題共三題,總計 100 分,考試時間為一個半小時。
2. 不得使用自帶的電子裝置,包括筆記本、 U 盤、手機等;不得使用參考書籍和資料。
3. 程式設計環境為 Windows 2000 Professional + Visual Studio 6.0 ,隻能使用 C/C++ 語言。
4. 每一題的輸入資料都從檔案 input.txt 中讀取,将結果輸出至檔案 output.txt ,請嚴格按照每一題的輸入輸出格式 。在考試過程中,我們恕不提供除試題中樣例以外的測試資料,請自行生成輸入資料以對程式進行自測。
5. 在考試結束之前自行設定編譯環境和配置編譯參數,将所寫的程式編譯成可執行檔案,檔案名在每一題中都有規定。生成的可執行檔案将作為最終測試的唯一依據,若無法運作您的可執行檔案,最終成績将記為零分。
6. 程式對每個測試資料的可用運作時間上限 1 秒,若逾時或結果錯誤,則該測試用例不能得分。
7. 在考試過程中,若計算機出現故障,請及時通知從業人員,以免耽誤您的考試時間。
8. 上機考試結束後,請勿馬上離開,從業人員将會直接進行現場測試,需要您的合作。
第一題(可執行檔案名 program1.exe )
求正整數 N(N>1) 的質因數的個數。注意: 1 不是 N 的質因數:若 N 為質數, N 是 N 的質因數。相同的質因數需要重複計算。
如 120=2*2*2*3*5 ,共有 5 個質因數。
輸入:
正整數N ,1<N<109
輸出:
N 的質因數的個數
樣例輸入:
120
樣例輸出
5
第二題(可執行檔案名:program2.exe )
對于一個十進制數A ,将A 轉換為二進制數,然後按位逆序排列,再轉換為十進制數B ,我們乘B 為A 的二進制逆序數 。
例如對于十進制數173 ,它的二進制形式為101011101 ,逆序排列得到10110101 ,其十進制數為181 ,181 即為173 的二進制逆序數
一個1000 位( 即2999 ) 以内的十進制數。
輸入的十進制數的二進制逆序數。
173
樣例輸出:
181
(下列程式隻能忍受部分測試用例)
第三題(可執行檔案名program3.exe )
有若幹張郵票,要求從中選取最少的郵票張數湊成一個給定的總值。
如,有1 分,3 分,3 分,3 分,4 分五張郵票,要求湊成10 分,則使用3 張郵票:3 分、3 分、4 分即可。
首先是要求湊成的郵票總值M ,M<100
然後是一個數N ,N 〈20 ,表示有N 張郵票。接下來是N 個正整數,分别表示這N 張郵票的面值,且以升序排列。
能夠湊成總值M 的最少郵票張數。若無解,輸出0 。
10 5 1 3 3 3 4
3
分析:這是最簡單的背包問題,動态規劃的方法,寫得不是很規範,不過結果很不錯,線形複雜度 ~~
2.清華計算機系研究所學生考試上機06年試題解答(自己今天下午做的,郁悶之中。。。做的時間太長)
一、輸入:兩行
第一行:M和N
第二行:X
M和N是一個十進制數,M和N都在[2-36]之間,X是一個M進制數,X在[1-2*10^19]
輸出:一行
第一行:現在要求你将M進制數X轉換成N進制數輸出
輸入一:
16 10
F
輸出一:
15
二、按照手機鍵盤輸入字母的方式,計劃所花費的時間
如:a,b,c都在“1”鍵上,輸入a隻需要按一次,輸入c需要連續按三次。
如果連續兩個字元不在同一個按鍵上,則可直接按,如:ad需要按兩下,kz需要按6下
如果連續兩字元在同一個按鍵上,則兩個按鍵之間需要等一段時間,如ac,在按了a之後,需要等一會兒才能按 C。
現在假設每按一次需要花費一個時間段,等待時間需要花費兩個時間段。
現在給出一串字元,需要計劃出它所需要花費的時間。
輸入一:bob
輸出一:7
輸入二:www