題目連結:
給定一正整數 N (1 ≦ N ≦ 100),代表接下來有 N 列輸入。每列給定一個車牌號碼。號碼分為兩部分,而兩部分由一個「-」分隔。第一部分有三碼,由大寫英文字母組成;第二部分有四碼,由阿拉伯數字 0 ~ 9 組成。
將第一部分視作以 26 進位的數字(「A」看作 0 、「B」看作 1 、……以此類推),其轉成十進位後的值與第二部分的差值如果 ≦ 100,則代表這個車牌為「nice」;反之為「not nice」。
對於每個車牌,請判斷是「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 。
而其他數字也是同理。最後將第一部分減去第二部分取絕對值再做判斷即可。
此次分享到此為止,如有任何更加簡潔的想法或是有說明不清楚之地方,也煩請各位大大撥冗討論。