看板 Math 關於我們 聯絡資訊
※ 引述《chanlele (長樂)》之銘言: : 大家好~想向各位請教! : 問題是這樣子的: : 10元硬幣30枚,20元硬幣20枚,30元硬幣10枚,請問付出600元有多少種排列組合? : 看到問題之後想的方向是x+2y+3z=60,在未知數各有限制的情況下窮舉,後來發現組合太 : 多了用電腦跑出所有可能性和篩選出符合的答案…… : 基本上高中後就很少碰數學了,想請問有沒有更「數學」的方法來解答這個問題呢? : 謝謝! : (Var1-3 是x y z : https://i.imgur.com/oZUc4AV.jpg
: (如果分類或標題不對請再和我說,不清楚這是解未知數還是排列組合,我分不出來Q 10x+20y+30z = 600 => x+2y+3z = 60, 0≦x≦30, 0≦y≦20, 0≦z≦10 Consider the generating function: (1+x+x^2+...+x^30)(1+x^2+x^4+...+x^40) 1-x^31 1-x^42 =-------- --------- 1-x 1-x^2 1-x^31-x^42+x^73 = ------------------ (1-x)^2(1+x) ∞ ∞ = (1-x^31-x^42+x^73)Σ(n+1)x^n Σ (-1)^n x^n n=0 n=0 a_n = n+1, b_n = (-1)^n z=0 => x+2y = 60 => 找generating function的x^60係數: (i) 後面無窮級數乘積的x^60係數 60 60 60 30 29 Σa_nb_(60-n) = Σ(n+1)(-1)^(60-n) = Σ(n+1)(-1)^n = Σ(2n+1)-Σ(2n+2) n=0 n=0 n=0 n=0 n=0 30 29 = Σ(2n+1) - Σ(2n+1) - 30 n=0 n=0 = 2*30+1-30 = 31 (ii) 後面無窮級數乘積的x^29係數 29 29 29 14 14 Σa_nb_(29-n) = Σ(n+1)(-1)^(29-n) = Σ(n+1)(-1)^(n+1) = -Σ(2n+1) + Σ(2n+2) n=0 n=0 n=0 n=0 n=0 14 14 = -Σ(2n+1) + Σ(2n+1) + 15 n=0 n=0 = 15 (iii) 後面無窮級數乘積的x^18係數 18 18 18 9 8 Σa_nb_(18-n) = Σ(n+1)(-1)^(18-n) = Σ(n+1)(-1)^n = Σ(2n+1) - Σ(2n+2) n=0 n=0 n=0 n=0 n=0 9 8 = Σ(2n+1) - Σ(2n+1) - 9 n=0 n=0 = 2*9+1-9 = 10 => generating function的x^60項係數 = 31 - 15 - 10 = 6 z = 1 => x+2y = 57 找generating function的x^57項係數: 57 28 28 Σ(n+1)(-1)^(n+1) = -Σ (2n+1) + Σ(2n+2) = 29 n=0 n=0 n=0 26 13 12 Σ(n+1)(-1)^n = Σ(2n+1) - Σ(2n+2) = 27-13 = 14 n=0 n=0 n=0 15 7 7 Σ(n+1)(-1)^(n+1) = -Σ(2n+1) + Σ(2n+2) = 8 n=0 n=0 n=0 => 係數 = 29 - 14 - 8 = 7 In general, z = 2k => x+2y = 60-6k => 找generating function的x^(60-6k)係數 60-6k 60-6k 30-3k 29-3k Σ (n+1)(-1)^(60-3k-n) = Σ (n+1)(-1)^n = Σ (2n+1) - Σ (2n+2) n=0 n=0 n=0 n=0 = 2(30-3k)+1 - (30-3k) = 31 - 3k, 0≦k≦5 29-6k 14-3k 14-3k Σ (n+1)(-1)^(29-6k-n) = -Σ (2n+1) + Σ (2n+2) = 15-3k, 0≦k≦4 n=0 n=0 n=0 18-6k 18-6k 9-3k 8-3k Σ (n+1)(-1)^(18-6k-n) = Σ (n+1)(-1)^n = Σ(2n+1) - Σ(2n+2) n=0 n=0 n=0 n=0 =2(9-3k)+1 - (9-3k) =10 - 3k, 0≦k≦3 => x^(60-6k)項係數 = (31-3k) - (15-3k) - (10-3k) = 3k + 6, 0≦k≦3 = (31-3k) - (15-3k) = 16, k = 4 = 31-3k, k = 5 z = 2k+1 => x+2y = 60-3(2k+1) = 57-6k => 找generating function的x^(57-6k)係數 57-6k 57-6k 28-3k 28-3k Σ (n+1)(-1)^(57-6k-n) = Σ (n+1)(-1)^n = -Σ (2n+1) + Σ (2n+2) n=0 n=0 n=0 n=0 = 29-3k, 0≦k≦4 26-6k 26-6k 13-3k 12-3k Σ (n+1)(-1)^(26-6k-n) = Σ (n+1)(-1)^n = Σ (2n+1)- Σ (2n+2) n=0 n=0 n=0 n=0 = 2*(13-3k)+1 - (13-3k) = 14-3k, 0≦k≦4 15-6k 15-6k 7-3k 7-3k Σ (n+1)(-1)^(15-6k-n) = -Σ (n+1)(-1)^(n+1) = -Σ (2n+1) + Σ (2n+2) n=0 n=0 n=0 n=0 = 8-3k, 0≦k≦2 => x^(57-6k)項係數 = (29-3k) - (14-3k) - (8-3k) = 3k + 7, 0≦k≦2 = (29-3k) - (14-3k) = 15, 3≦k≦4 => 把z=0~10的case都加起來: 2 Σ[(3k+6)+(3k+7)] + [(3*3+6)+15] + (16+15) + (31-3*5) k=0 2 = Σ(6k+13) + 30 + 47 k=0 = (13+25)*3/2 + 77 = 57 + 77 = 134 所以有134種付法 Remark: 用程式驗算如下 #include <iostream> using namespace std; int main() { int x, y, z; int count = 0; for(z = 0; z <= 10; ++z){ for(y = 0; y <= 20; ++y){ for(x = 0; x <= 30; ++x){ if(x+2*y+3*z == 60){ ++count; cout << x << " " << y << " " << z << endl; } } } } cout << count << endl; } -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 114.47.66.237 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/Math/M.1684169079.A.788.html ※ 編輯: yueayase (114.47.66.237 臺灣), 05/16/2023 00:45:53 ※ 編輯: yueayase (114.47.66.237 臺灣), 05/16/2023 01:04:18
chanlele : 謝謝! 05/25 13:02