幾位的分析非常好,我也跟風來討論一下解的個數問題。
就從我們已得出的公式出發:
d[2000] = (-2)^k * d[2] ----- (1)
現在的問題是當給定d[2000]的值為m時,d[2]一共有多少個解 (例如在原題中, m=7)
注意m總可以分解出2的因子乘積:
m = 2^p * q
p, q為整數, p>=0, q為奇數(可能為負)
給定p,q,把k,d[2]看成未知數,我們需討論以下方程的整數解個數。
2^p * q = (-2)^k * d[2]
首先明確,每個解的k和d[2]是一一對應的,所有解中不同k的個數就是所有解中d[2]的個數。
以p的值分情況討論。
1) 當p=0時(也就是m是奇數時),方程變為
q = (-2)^k * d[2]
因為q為奇數,k一定為0, 因此此時隻有一個解:
d[2] = q = m
也就是d[2]的值與d[2000]相等
2) 當p=1時, 方程為
2 * q = (-2)^k * d[2]
此時k可取兩個值: 0和1, 對應於d[2]的兩個解:
k=0: d[2] = 2*q = m
k=1: d[2] = 2*q/(-2) = -q = -m/2
也就是說,d[2]或與d[2000]值相等,或為d[2000]的-1/2
3) 當p=2時,方程為
2^2 * q = (-2)^k * d[2]
此時k可取0,1,或2, 對應與d[2]的3個解:
k=0: d[2] = 2^2 * q = m
k=1: d[2] = 2^2 * q / (-2) = -2*q = -m/2
k=2: d[2] = 2^2 * q / (-2)^2 = q = m/4
不難看出,對於一般情況,方程共有(p+1)個解: m, -m/2, m/4, -m/8, ....
現在可以回答幾個前麵關心的問題:
1. 何時隻有一個解?
當p=0, 也就是當m為奇數時(例如原題m=7)
2. 何時題中兩種情況都可能發生(買和賣: k>0), 並且需要用到“第二天挖多於2枚”的條件?
當p=1時, 方程有兩種可能解: k為0或1,注意此時d[2]為 m 或 -m/2, 比較正負性可確定一個解
例如: 當 m = 6 = 2 * 3 時, 我們知道 d[2]可為 6 或 -3, 因為有“第二天挖多於2枚”的條件,就隻能為6
綜上,如果原題改為"第2000天比1999天多挖6枚", 問題也隻有一個解,而且需要考慮買和賣兩種情況,感覺更有趣一些:)