TOI 2021下學期 新手組題目解析
3月
題目分析
- 時間系統跟現實的異同
- 時、分、秒數量關係不變。換句話說, hr = mins, mins = secs
- 一天還是個時區
- 一個時區變成小時,因此一天有小時,也就是 分鐘
- 加減時區會影響到…
- 秒數 :不變
- 分鐘數 :雙數個時區不變,單數個時區會加減。結果可能大於60或小於,因此必須是除以的餘數。另外,超過則多一小時,小於則少一小時。
- 小時數 :有可能跨過換日線。超過36會多一天,小於0會少一天,因此必須是除以的餘數。
解題技巧說明
- 調整 :往前 個時區,相當於往後 個時區。因此,時區可以統一往前移,亦即把 統一為正數。
- 小時全部化為分鐘:分鐘數依時區加減完畢後,再除以 ,商數即 ,餘數即
注意事項
- 負數除法結果。e.g.
- 數學運算結果:商為,餘數為
- 程式運算結果:商為,餘數為
- 輸出格式。
- 、、 均為正數
- 、 若小於10,需補0,湊滿兩位數
- 不用動
測資發想
題目測資只有部分狀況,請考量各種極端狀況,自己生測資來測試。
- 各種排列組合:
- 為正、 為負
- 的時候加單數時區、的時候減單數時區
- 結果大於、小於
範例程式碼
調整T
化小時為分鐘
調整T、化小時為分鐘
題目分析
- 輸入:以0為終點,不確定會有幾個數字,已知最多有10個數字
- 比較:一次抽兩個數字出來比較,分成四種情況,再做對應的處理:
- 兩數皆可被7整除:取70的餘數較大的比較大
- 第一數可被7整除:第一數較大
- 第二數可被7整除:第二數較大
- 兩數皆無法被7整除:取 77 的餘數較小的比較大
解題技巧說明
- 使用for迴圈或while迴圈進行輸入
- 使用多重選擇結構進行判斷
- 資料結構
- 不使用資料結構:輸入一個新的數字,就要馬上與前一數比較,找出最大值,重複直到最後一個數字。
- 使用資料結構(如:陣列):因無法預估長度,可預先開固定大小的陣列。
注意事項
- 使用if-else if-else時,注意先後順序
- 如不使用資料結構,在輸入下一個數字之前,就要立刻進行比較
- 如果使用陣列,陣列大小應該開11。之所以是11,是因為剛好有10個數字的話,會存到最後一個0。
- 如果使用陣列,全部開始比較之前,需要設一暫存變數存「目前為止的最大值」,而暫存變數的值建議設為0或第0個數字的值。
測資發想
- 各種排列組合:
- 四種情況
- 兩個數字,或兩個以上的數字
- 最大數出現在第一個、中間、最後一個
範例程式碼
使用while,不使用迴圈
使用for-loop搭配break/continue指令,陣列開最大
題目分析
- 所有螞蟻的數量要比蚱蜢多:比較前面兩個輸入即可得知
- 螞蟻的總身高比蚱蜢高:用兩個變數和迴圈,分別連加求得螞蟻、蚱蜢總身高。
注意事項
- 輸入一個數字後,可以馬上累加起來,和計算機的原理很像,因此不需要分成兩個迴圈去處理。
測資發想
- 各種排列組合:
- 螞蟻的數量大於、等於、小於蚱蜢的數量
- 螞蟻的總身高大於、等於、小於蚱蜢總身高
範例程式碼