題目連結:
題目意譯:
X 是一個好數字,其滿足將其每個位數各自旋轉 180 度後,我們得到一個合法的數字且與原先數字 X 不同。每個位數都必須旋轉 —— 我們不能選擇跳過任何一個。
一個數字為合法,其滿足每個位數旋轉後仍維持一個正常的位數。 0 、 1 和 8 旋轉後仍是自身; 2 和 5 旋轉後變為對方(在這個情況下它們的旋轉方向與其他數字不同,換句話說 2 或 5 做了鏡像翻轉); 6 和 9 旋轉變為對方,而其他數字無法旋轉變為其他數字。
現在給定一正整數 N ,1 ~ N 之間有多少數字 X 是好數字?
注:
N 保證落於範圍 [1, 10000] 之間。
範例測資:
輸入: 10
輸出: 4
解釋: 範圍 [1, 10] 有四個好數字:2 、 5 、 6 、 9 。注意 1 和 10 不是好數字,因為它們旋轉之後還是自己(值不變)。
解題思維:
模擬即可。
用迴圈跑過 1 ~ N 中的每個數字 X ,對於每個 X 都去旋轉看看(寫 if 判斷即可 1 對到 1 、 2 對到 5 等等)。在掃過 X 的每個位數時,如果有遇到 3 、 4 或是 7 ,則即可以確定 X 旋轉後不可能得到一個合法的數字所以可以直接跳到下一個數字。
接著將 X 旋轉後得到新數字 X' ,此時判斷一下 X' 與 X 是否相等。如果相等,則 X 不是好數字。
用一個變數充當計數器去計算好數字的數量,跑完上述的過程之後即得到所求。
此次分享到此為止,如有任何更加簡潔的想法或是有說明不清楚之地方,也煩請各位大大撥冗討論。