主題

ZeroJudge - f707: 幸運 7 (Lucky Seven) 解題心得

Not In My Back Yard | 2021-04-03 00:00:15 | 巴幣 0 | 人氣 146

題目連結:


題目大意:
有個村落有著特別的數字比較方式:
可被 7 整除的數字視為比不能被 7 整除的數字還要來得「大」,如 140 「大於」 52;
可被 7 整除的數字中,除以 70 的餘數較大者視為較「大」,如 28「大於」 14;
不可被 7 整除的數字中,除以 77 的餘數較小視為較「大」,如 15 比 16 、 68 還要「大」。

現在輸入只有一列,該列給定若干個正整數(皆介於 1 ~ 100000 之間),以一個「0」作結(此數不納入結果範圍內)。試問給定的那些正整數中何者最「大」?如果有多個數字一樣大,則輸出給定順序中較前面的。



範例輸入:
範例輸入 #1
7 14 28 0

範例輸入 #2
7 77 777 0

範例輸入 #3
52 140 0

範例輸入 #4
15 16 68 0


範例輸出:
範例輸出 #1
28

範例輸出 #2
7

範例輸出 #3
140

範例輸出 #4
15


解題思維:
跟平常找最大值的題型基本一樣,只是比較本題比較數字的「大小」之條件跟別的題目不同。按照題目所述:
現有兩數 a 、 b,
當 a % 7 == 0 且 b % 7 != 0 時,a > b;
當 a % 7 == 0 且 b % 7 == 0 且 a % 70 > b % 70 時,a > b;
當 a % 7 != 0 且 b % 7 != 0 且 a % 77 < b % 77 時,a > b。

而上面 a 、 b 互換便可以得到 b > a 時的情形。剩下的就是 a == b 之情況。




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

創作回應

更多創作