切換
舊版
前往
大廳
主題

ZeroJudge - e320: NOIP2017 Day1.1.小凱的疑惑 解題心得

Not In My Back Yard | 2019-07-30 22:09:48 | 巴幣 0 | 人氣 140

題目連結:


題目大意:
給定兩正整數 a 、 b (1 ≦ a 、 b ≦ 1, 000, 000, 000,且 a 、b 互質),代表兩種硬幣之幣值。

以 3 、 7 兩幣值為例,無法湊出 1 、 2 、 4 、 5 、 8 、 11 這六個值,且 > 11 的值保證皆可湊出。而其中, 11 是最大的無法湊出之值。

求最大的、無法以這兩個幣值(這兩種硬幣數量是無限的)湊出來的金錢量為何?保證有無法湊出的金額。



範例輸入:
3 7


範例輸出:
11


解題思維:
首先,我們先對於兩幣值 a 、 b 求出要 ≧ 多少,才能保證必能湊出來。(以下假設 a < b)

可以看到當有連續 a 個數值可以湊出來時,則其後的值皆可湊出。設這連續區間之最小值為 X,即此區間為 [ X, X + a - 1 ],則 X + a 可被湊出(因為 X 可以湊出) 、 X + a + 1 也可湊出 (因為 X + 1 可被湊出)、……以此類推,推得區間 [ X + a, X +2a - 1 ] 中的所有值也可被湊出。

而往後的任何整數與上同理,皆可被湊出。


那要怎麼求出 X 的值呢?因為 X 要是滿足皆可湊出的第一個區間的第一個數,因此 X 要盡可能地小。因此我們 X 可以寫為 a × y1 ,而 X + 1 寫作 a × y2 + b 、 X + 2 寫作 a × y3 + 2b 、 …… 、 X + a - 1 設為 b × (a - 1)。

因為這個區間有 a 個數字,因此
(b × (a - 1)) - (a × y1) + 1 = a
將 a × y1 替換回 X 可得
X = ab - a - b + 1 。

而題目所求恰好為 X - 1 ,即為 ab - a - b 。
此次分享到此為止,如有任何更加簡潔的想法或是有說明不清楚之地方,也煩請各位大大撥冗討論。

創作回應

更多創作