全部都是 -1 時:-8
下一個最小的是
-1 × 7 + 1 = -6
接著,有沒有什麼系統化的方式
找到下一個最小的、可以加出來的數字
我們猜測,接下來每個整數(直到最大值2×8=16)
都可以被加出來
構造的方法是:
(i) 只要有一個數是1
把他變成2,就可以讓總和多1
(ii) 只要有一個 -1 和一個 2
把他們都變成 1,就可以讓總和多 1
依照這種操作,整個過程會是:
-6 = (-1) + (-1) + (-1) + (-1) + (-1) + (-1) + (-1) + 1
-5 = (-1) + (-1) + (-1) + (-1) + (-1) + (-1) + (-1) + 2
-4 = (-1) + (-1) + (-1) + (-1) + (-1) + (-1) + 1 + 1
-3 = (-1) + (-1) + (-1) + (-1) + (-1) + (-1) + 1 + 2
-2 = (-1) + (-1) + (-1) + (-1) + (-1) + (-1) + 2 + 2
-1 = (-1) + (-1) + (-1) + (-1) + (-1) + 1 + 1 + 2
...
13 = (-1) + 2 + 2 + 2 + 2 + 2 + 2 + 2
14 = 1 + 1 + 2 + 2 + 2 + 2 + 2 + 2
15 = 1 + 2 + 2 + 2 + 2 + 2 + 2 + 2
16 = 2 + 2 + 2 + 2 + 2 + 2 + 2 + 2
那為什麼可以保證中間可以一直這樣操作、不會中斷?
如果一開始有 x 個 (-1) 和 y 個 1
首先可以做 y 次操作 (i)
就會變成 x 個 (-1) 和 (8-x) 個 2
再來做 1 次操作 (ii)
就會變成 (x-1) 個 (-1) 和 2 個 1
可以發現
只要還有 1 存在
就可以「無條件升級」,總和+1
但只要 1 用完了,就需要把 (-1) 消耗掉
(不需要考慮 2 的消耗,因為 1 用完了就會出現新的 2)
除了從總和 -6 開始只用 1 個 1
(總共產生 -6, -5 兩種數字)
後面每次消耗一個 (-1) 就會多兩個 1 可以用
那如果說把數字變成0,2,3會更好想嗎
會吧
畢竟就沒有負數了
只是說原理還是一樣
(續)
每個循環:消耗(-1),(ii) -> (i) -> (i)
總共可以消耗7次,每次產生3個數字
剛好可以從 -4 到 16