✔ 最佳答案
給你一個較「另類」的看法。
首先,看一個簡單點的問題:三元方程 x + y + z = 1999 的「正整數」解的個數。
這個問題可看成有1999個數目字"1"排成一直線,而每個"1"之間都留有空位。現在我要用兩個"+"號將這些"1"分成三堆,那麼每推"1"的數目就是 x, y, z 的值。因此,現在的問題變成了有多少種方法將這兩個"+"號放進去。
這個問題很容易就可以解決。因為現在有 (1999 - 1) = 1998 個空位,所以我們要從1998個空位中選2個放進"+"號,因此我們有 C(1998, 2) 種方法。 (以 C(n, r) 代表 nCr)
一般來說,若給出方程 x_1 + x_2 +...+ x_r = n,正整數解的個數便是 C(n-1, r-1)。
好了,看看原來的問題。現在的問題是問「非負整數解」,那麼我們可以怎樣去解決呢?
首先,x, y, z 是非負整數,即 x > -1, y > -1, z > -1,所以我們有 x + 1 > 0, y + 1 > 0, z + 1 > 0。若假設 x' = x + 1, y' = y + 1, z' = z + 1,那麼我們有 x', y', z' > 0,即 x', y', z' 是正整數。另外,我們亦知道每一個 (x', y', z') 的組合也是對應著一個 (x, y, z) 的組合。所以我們只須找出 x', y', z' 正整數解的數目。
要小心的是 x' + y' + z' = x + y + z + 3 = 1999 + 3 = 2002。因此,我們應要解的方程是 x' + y' + z' = 2002 而非 x' + y' + z' = 1999。
由前面的討論,我們已得出這個方程有 C(2002-1, 3-1) = C(2001, 2) = 2001 x 2000 / 2 = 200100 個正整數解。因此,我們知道原來的方程非負整數解的數目也是有200100個。
這個方法其實是叫做"Partition of integers",是屬於「組合論」中的知識。「組合論」中還有很多有趣的問題,例如將$10分成$1,$2,$5有多少種不同的組合?若你有興趣,可以看看以下這本書:
Title: Mathematics of choice: How to count without counting
Author: Ivan Niven
Publisher: Mathematical Association of America