740-A. Alyona and copybooks
Tags: number-theory
出處:https://codeforces.com/contest/740/problem/A
提交:https://codeforces.com/contest/740/submission/110277415
問題:給定 $n, a, b, c\in[1,10^9]$ 四個正整數,說明一次買 1 本、2 本、3 本書分別可以花費 a、b、c 元,已知目前有 n 本書,請問最少需要再花費多少錢買新書才能和那 n 本書湊成 4 的倍數?
解法:
一開始當然很直覺地先算出 n 除以 4 的餘數,再用 4 去減它就會得到新書數量的餘數 k。所以說,當 k = 4 的時候很明顯不用再買書,但是當 k = 1 的時候,可以買 1, 5, 9, … 本書;當 k = 2 的時候,可以買 2, 6, 10, … 本書;當 k = 3 的時候,可以買 3, 7, 11, … 本書,那麼在這些不同的 k 底下分別究竟要買多少本書才能最便宜呢?我們需要全部的數量都嘗試過嗎?這便是這題的考點,答案是不用!只要嘗試一部份就好。這個事實會成立的關鍵便在於下面這個 lemma:當你新買了 $x_0$ 套 1 本、$y_0$ 套 2 本、$z_0$ 套 3 本書,那麼所有其他滿足「$x\ge x_0$ 套 1 本、$y\ge y_0$ 套 2 本、$z\ge z_0$ 套 3 本」的買法都不會比較便宜。接下來就讓我們來一一分析不同的 k 底下只需要考慮哪些買法就好。
Case k=1:
1=1 ==> 之後都不能再用到 1,否則一定比這個貴。
5=2+3 ==> 之後都不能再同時用到 2 和 3,否則一定比這個貴。
9=3x3 ==> 之後都不能再只用到 3,否則一定比這個貴。 ==> 希望之後的數字能只用 2 達成,
但是呢這個願望不可能成真,因為 4 的倍數 + 1 不可能是 2 的倍數,所以往後的數字我們都不考慮。
==> 餘數為 1 的 case 我們只需要考慮 a、b+c、3c。
Case k=2:
2=2 ==> 之後都不能再用到 2,否則一定比這個貴。
=1x2 ==> 之後都不能再用到兩個以上的 1,否則一定比這個貴。
6=3x2 ==> 之後都不能再用到兩個以上的 3,否則一定比這個貴。
=1x3+3 (用到兩個以上的 1 不合法)
=1x6 (用到兩個以上的 1 不合法)
之後 10 以上就不可能因為至多一個 1 和至多一個 3 只能湊出 4。
==> 餘數為 2 的 case 我們只需要考慮 b、2a、2c。
Case k=3:
3=3 ==> 之後都不能再用到 3,否則一定比這個貴。
=1+2 ==> 之後都不能再同時用到 1 和 2,否則一定比這個貴。
=1x3 ==> 之後都不能再用到三個以上的 1,否則一定比這個貴。
上面的條件隱含後面 (只能用至多 2 個 1) 或 (只能用任意個 2) 來組成。
但是至多 2 個 1 只能湊出 2,而 4 的倍數 + 3 也不可能是 2 的倍數,所以往後的數字我們都不考慮。
==> 餘數為 3 的 case 我們只需要考慮 c、a+b、3a。
實作:
|
|
結果: