切換
舊版
前往
大廳
主題

ZeroJudge - b877: 我是電視迷 解題心得

Not In My Back Yard | 2019-09-18 23:38:05 | 巴幣 2 | 人氣 717

題目連結:


題目大意:
頻道號碼有 0 ~ 99 共 100 個頻道。而遙控器只剩下「下一台」的按鈕可以使用。

現給定兩整數 a 、 b ,依序代表現在在地頻道以及要轉過去的頻道。試問要按幾次「下一台」的按鈕才能從 a 轉到 b 。

註:能不以 if 判斷式(只用算術運算子)達成目標為佳。



範例輸入:
5 10


範例輸出:
5


解題思維:
說到這題的解答(其中一種)就不得不提一下餘數的特性(更精確的說,是定義):
餘數不是僅限於正數而已,例如模 5 下,-3 、 2 是同餘的、 -8 也跟 -3 、 2 同餘。

因為取餘在數線上的意義即為:將所有整數(不限正整數)映射到數字 0 ~ n - 1 這個群裡(模 n 的時候)。

然後,剛好本題的要求剛好可以對應於模 100 下的加減法。當 a ≦ b 時,答案自然是 b - a ;而 a > b 時,所求可寫為 b - a + 100 。

因此,我們的解答可寫作(b - a + 100) mod 100 。 a ≦ b 時,後面的 + 100 會被取餘抵銷掉;就算 a > b 時, b - a + 100 將會是正數,模 100 後即無影響。即達成了不用 if 只用算術運算子的要求。

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

創作回應

追蹤 創作集

作者相關創作

更多創作