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

Ping-Lun Liao
5 min readOct 30, 2019

--

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

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

a014:貨比三家 (*) — 多重/巢狀if

這題可用一個變數min來表示最小值,可寫成如下程式碼:

而這樣子的寫法也可以改成迴圈版本:

a017:成績等第 (*) — 多重/巢狀if

這題很多人會使用巢狀if來解題,但也可以用迴圈方式來解:

a024:所有位數和 — while 迴圈

這題常見的解法會類似如下:

也可以用字串來解:

a025:數字倒轉 — while 迴圈

這題常見的解法會類似如下:

也可以用字串來解:

a033:故障的計算機 — 格式化輸出

這題用到 setfillsetw 格式化輸出函數。須注意什麼時候要補 ‘0’,什麼時候要補 ‘_’

a034:距離 — 數學函數-sqrt
這題用到 setprecisionfixed 格式化輸出函數以及 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)的方式來解題。這樣的解法也可以畫出如下的圖形:

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

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

祝各位解題愉快!

Originally published at https://yunlinsong.blogspot.com.

--

--

No responses yet