台中女中程式解題系統(Green Judge)基礎題庫解題說明

若您覺得文章寫得不錯,請點選文章上的廣告,來支持小編,謝謝。

本篇筆者會從台中女中程式解題系統(Green Judge)基礎題庫(網址:http://www.tcgs.tc.edu.tw:1218/Problems?tab=tab00)中挑選題目出來說明。所挑選的題目如下:

底下逐一說明以上幾題筆者的解題思路。

a014貨比三家 (*) -- 多重/巢狀if
這題可用一個變數min來表示最小值,可寫成如下程式碼:
而這樣子的寫法也可以改成迴圈版本:

a017
成績等第 (*) -- 多重/巢狀if
這題很多人會使用巢狀if來解題,但也可以用迴圈方式來解:


a024所有位數和 -- while 迴圈
這題常見的解法會類似如下:

也可以用字串來解:

a025
數字倒轉 -- while 迴圈
這題常見的解法會類似如下:


也可以用字串來解:




a033故障的計算機 -- 格式化輸出
這題用到 setfill 與 setw 格式化輸出函數。須注意什麼時候要補 '0',什麼時候要補 '_'

a034距離 -- 數學函數-sqrt
這題用到 setprecision 與 fixed 格式化輸出函數以及 sqrt 數學函數。

a035位數 -- 數學函數-log10
這題用到 log10 數學函數。須注意如何使用 log10 來算出 a 的 b 次方之位數,因為 a 的 b 次方可能會很大

a041收集冰棒棍 (**) -- 迴圈應用
此題用一個變數記錄目前吃了幾支冰棒(sum),一個變數紀錄目前可換的冰棒數(q),以及一個變數紀錄不換的冰棒有幾根(r),接著看q + r 是否可以繼續換冰棒,一直重複到不能換冰棒為止。

a042
13的次方 (**) -- 迴圈應用
此題要求出13 的 N 次方的十位數,這題即使使用 long long int 也會造成 overflow。那保留13的N-1次方之十位數與個位數,就可以算出十位數數字是多少了。程式碼如下:


a043最大公因數 -- 迴圈應用
此題使用迴圈來做輾轉相除法,即可算出最大公因數,變數 a 即為最大公因數

a044盈數、虧數和完全數 -- 迴圈應用
此題用迴圈從判斷1到 N/2 是否為 N 的因數,若是則加總(s)。接著比較加總結果與 N的大小關係來輸出對應的訊息。(那有沒有更好的演算法呢?)

a045質數判斷 -- 迴圈應用
除了 2 以外,其餘偶數皆不是質數。若N是奇數,則判斷小於或等於 sqrt(N) 的所有奇數是不是N的因數,只要有一個是因數,N就不是質數。

a048數字金字塔 -- 多重迴圈
a049斜紋地硨 -- 多重迴圈
這兩題題與a046、a047可用2D座標(Cartesian coordinate system)的方式來解題。這樣的解法也可以畫出如下的圖形(可參考:Python 金字塔圖案Python 巴斯卡三角形):

a050九九乘法表 -- 多重迴圈
常見的九九乘法表練習,須注意輸出的格式即可。

參考解答下載處:台中女中解題系統_基礎題庫.zip
此參考答案是筆者自己花時間撰寫出來的,若有疑問,歡迎透過底下方式來討論:

祝各位解題愉快!

沒有留言: