題目連結:
題目大意:
有個村落有著特別的數字比較方式:
可被 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 之情況。
此次分享到此為止,如有任何更加簡潔的想法或是有說明不清楚之地方,也煩請各位大大撥冗討論。