第六次平時考WP
題目 A: Elderly on the Trail
解題重點
本題的目標是計算一個指定座標 (x, y) 的「訊號良好分數 S」。訊號的覆蓋範圍是基於「曼哈頓距離」,也就是 |x1 - x2| + |y1 - y2|。
主要邏輯如下:
- 讀取要計算分數的目標座標
(x, y)以及監測器的數量N。 - 遍歷
N個監測器,讀取每一個監測器的位置(a, b)和訊號強度c。 - 計算目標座標與當前監測器之間的曼哈頓距離
dist。 - 如果
dist <= c,表示該監測器的訊號有覆蓋到目標座標,將計數器count加一。 - 所有監測器都檢查完畢後,判斷
count的值。如果count >= 3,則分數S就是count;否則,分數S為0。 - 輸出分數
S。
Java Code
1 | import java.util.*; |
題目 B: Jimmy’s LeetCode Penalty Tracker
解題重點
本題要求計算一個累進的罰款總額。規則是:每連續一天不解題,罰款金額就會增加。
主要邏輯如下:
- 使用一個變數
price來累計總罰款。 - 使用一個變數
day來追蹤「連續未解題」的天數,這個變數也代表罰款的倍率。 - 遍歷每一天的活動紀錄(
1代表解題,0代表未解題)。 - 如果當天活動為
1(解題),則將連續未解題天數day重設為1。 - 如果當天活動為
0(未解題),則將當天的罰款day * 10加入總罰款price,然後將day加一,為下一天的可能罰款做準備。 - 遍歷完所有天數後,輸出總罰款
price。
Java Code
1 | import java.util.Scanner; |
題目 D: CheatCode Decoder I
解題重點
這是一個簡單的二進位解碼問題。題目給定一個由 0 和 1 組成的字串,需要將其每兩個字元一組進行解碼。
主要邏輯如下:
- 讀取包含二進位碼的整個字串
s。 - 使用
for迴圈,每次遞增i兩次 (i += 2),這樣可以一次處理兩個字元。 - 在迴圈中,取出當前的兩個字元
s.charAt(i)和s.charAt(i + 1)。 - 使用
if-else if結構判斷這兩個字元的組合:00->A01->B10->C11->D
- 直接印出對應的字母,題目要求輸出間不能有空格。
Java Code
1 | import java.util.Scanner; |
題目 E: Gift Selector
解題重點
本題要求判斷一個可能非常大的數字 n 是否為 330 的倍數。因為 n 的位數可能高達 10,000 位,所以不能直接用 long 或 int 來儲存。
主要邏輯是利用模運算的性質來處理大數:(A * 10 + B) % M = ((A % M) * 10 + B) % M。
- 將輸入的數字
n當作字串s讀取。 - 初始化一個變數
mod為0,用來儲存對330取模的餘數。 - 遍歷字串
s的每一個字元(即數字的每一位)。 - 在迴圈中,更新
mod的值:mod = (mod * 10 + digit) % 330,其中digit是當前字元轉換成的數字。 - 遍歷完所有位數後,如果最終
mod的值為0,則表示原數可以被330整除,輸出 “nice gift”。 - 否則,輸出 “skip”。
Java Code
1 | import java.util.Scanner; |
題目 G: Shanghai’s tap water comes from the sea
解題重點
本題要求判斷一個給定的字串是否為「迴文」(Palindrome)。迴文是指一個字串從前面讀和從後面讀都是一樣的。
主要邏輯如下:
- 讀取輸入的字串
s。 - 建立一個新的空字串(或使用
StringBuilder)down,用來儲存s的反轉版本。 - 從
s的最後一個字元開始,反向遍歷到第一個字元。 - 將遍歷到的每個字元依序附加到
down的末尾。 - 遍歷結束後,
down就會是s的完整反轉字串。 - 使用
.equals()方法比較原字串s和反轉後的字串down是否完全相同。 - 如果相同,則為迴文,輸出 “YES”;否則輸出 “NO”。
Java Code
1 | import java.util.Scanner; |
題目 H: Sobriety Test I
解題重點
本題要求根據答題結果(O 為答對,X 為答錯)判斷學生是否 “drunk”。規則是:如果答對的題目數量少於答錯的數量,則判定為 “drunk”。最後計算出所有 “drunk” 的學生總數。
主要邏輯如下:
- 讀取學生總數
N。 - 初始化一個計數器
total為0,用來記錄 “drunk” 的學生人數。 - 迴圈
N次,處理每個學生的答題記錄。 - 在迴圈中,讀取代表答題結果的字串
s。 - 為每個學生初始化兩個計數器
correct和incorrect。 - 遍歷字串
s,計算O和X的數量。 - 比較
correct和incorrect的數量。如果correct < incorrect,則該學生為 “drunk”,將total計數器加一。 - 所有學生都判斷完畢後,輸出
total的值。
Java Code
1 | import java.util.Scanner; |
說些什麼吧!