切換
舊版
前往
大廳
主題

ZeroJudge - e505: 12602 - Nice Licence Plates 解題心得

Not In My Back Yard | 2019-10-30 22:49:09 | 巴幣 2 | 人氣 227

題目連結:


題目大意:
給定一正整數 N (1 ≦ N ≦ 100),代表接下來有 N 列輸入。每列給定一個車牌號碼。號碼分為兩部分,而兩部分由一個「-」分隔。第一部分有三碼,由大寫英文字母組成;第二部分有四碼,由阿拉伯數字 0 ~ 9 組成。

將第一部分視作以 26 進位的數字(「A」看作 0 、「B」看作 1 、……以此類推),其轉成十進位後的值與第二部分的差值如果 ≦ 100,則代表這個車牌為「nice」;反之為「not nice」。

對於每個車牌,請判斷是「nice」還是「not nice」。



範例輸入:
2
ABC-0123
AAA-9999


範例輸出:
nice
not nice


解題思維:
本題也是照題目的意思做即可。而 26 進位傳成十進位並不難:
設一變數 X = 0 ,而現在要轉的 26 進位數字為 ABC 。則
ABC
先將 X 乘以 26 。然後因為碰到了 A ,所以將 X 加上 0 。X = 0
ABC
先將 X 乘以 26 。然後因為碰到了 B ,所以將 X 加上 1 。X = 1
ABC
先將 X 乘以 26 。然後因為碰到了 C ,所以將 X 加上 2 。X = 28
所以 26 進位的 ABC 轉成十進位後為 28 。而上面的過程等價於 ABC 的數值意義: 0 × 26 ^ 2 + 1 × 26 ^ 1 + 2 × 26 ^ 0 = 28 。

而其他數字也是同理。最後將第一部分減去第二部分取絕對值再做判斷即可。

此次分享到此為止,如有任何更加簡潔的想法或是有說明不清楚之地方,也煩請各位大大撥冗討論。

創作回應

更多創作