五年級硬幣問題試解。 |
送交者: 粱遠聲 2012年05月22日22:23:34 於 [靈機一動] 發送悄悄話 |
硬幣有1分, 5分, 10分, 25分四種.
問有多少種不同的方法可以湊成 2 元. 例如: 方法一: 200個1分 方法二: 195個1分, 1個5分. ... 解 在這些組合中,1分的個數只能以5的倍數出現。把每5分看成一點,2元共有 40點。 25分的硬幣是5點。2元中,25分硬幣不同的個數為0,1,2,3,4,5,6,7, 8。對於加進所有不同個數的25分硬幣,所剩的點數為(排成列) 40 35 30 25 20 15 10 5 0 對所剩的不同的點數,加進不同個數的10分硬幣(2點),所剩的點數為(排成行) 40,38,36,... 2, 0 35, 33, 31, ... 3, 1 30, ...... 25, ...... 20, ...... 15, ...... 10, 8, 6, 4, 2, 0 5, 3, 1 0 上述所剩的點數是為5分和1分的硬幣準備的。如果所剩的點數是k,5分(1點)的 不同組合是0點,1點,2點,... k點 餘下的點數由1分硬幣補齊(5個補1點)。 這樣,對所剩的點數k,就有k+1個不同的組合。 也就是說,上述所剩的點數陣列中的每個數加1,再把所有數加起來就是問題的 答案。 算法(以下除法均為整數除法): n = 40/5 + 1 s = 0 for ( i = 0; i < n; i++ ) { m = i * 5 r = m % 2 s = s + (m + 2 + r)(m/2+1)/2 } s 就是湊成2元不同組合的個數。 |
|
|
|
實用資訊 | |