這是數論中的最優策略問題,沒有平均數原理。
我好好想想再給你答案。
要上班了,下班繼續思考……(時間不多,才回復,見諒)
1. 從50中取走32粒剩餘18粒是正確的。
2. 演算法:從其中一堆中取n個,使得剩餘的所有數目正好是“必負局(此時先取必輸的局面)”。
3. 所謂“必負局”是指把剩餘的每一堆的數目都轉化成二進位制的數,然後把它們相加,規定做不進位的加法(也就是異或運算),即0+0=0,1+0=0,0+1=1,1+1=0(不進位),如果所得和是0(多個0),那麼此種局勢稱為“必負局”。
4. “必負局”原理:一個“必負局”,一次改動任何一個數,都將不再是“必負局”,同時,任何一個“非必負局”,透過正確地減少某個數,一定能變成“必負局”,並且這種操作是唯一的。設想現在是“必負局”,假如你先取,勢必把其中的某個數的1改成了0,0改成了1,一定不再是“必負局”了,而我一定可以在把它變會“必負局”。其實這樣的局勢,相當於偶數,你取了,必定有對應我取的,所以我一定拿到最後一個。簡單的想,考慮只有兩堆,那麼如果原來不相等,那就是“非必負局”,先取者有必勝方式,只要取多的一堆使得兩堆相等,之後你取幾個,我就從另一堆取幾個。
5. 應用:(也許格式會改變)
19 010011
7 000111
5 000101
3 000011
010010 (18)10
也就是,還要18才能變成“必負局”,所以50-18=32
所以第1次只能在第5堆石子中取32粒,使得取出32粒後為“必負局”,即異或運算結果為0。
這是數論中的最優策略問題,沒有平均數原理。
我好好想想再給你答案。
要上班了,下班繼續思考……(時間不多,才回復,見諒)
1. 從50中取走32粒剩餘18粒是正確的。
2. 演算法:從其中一堆中取n個,使得剩餘的所有數目正好是“必負局(此時先取必輸的局面)”。
3. 所謂“必負局”是指把剩餘的每一堆的數目都轉化成二進位制的數,然後把它們相加,規定做不進位的加法(也就是異或運算),即0+0=0,1+0=0,0+1=1,1+1=0(不進位),如果所得和是0(多個0),那麼此種局勢稱為“必負局”。
4. “必負局”原理:一個“必負局”,一次改動任何一個數,都將不再是“必負局”,同時,任何一個“非必負局”,透過正確地減少某個數,一定能變成“必負局”,並且這種操作是唯一的。設想現在是“必負局”,假如你先取,勢必把其中的某個數的1改成了0,0改成了1,一定不再是“必負局”了,而我一定可以在把它變會“必負局”。其實這樣的局勢,相當於偶數,你取了,必定有對應我取的,所以我一定拿到最後一個。簡單的想,考慮只有兩堆,那麼如果原來不相等,那就是“非必負局”,先取者有必勝方式,只要取多的一堆使得兩堆相等,之後你取幾個,我就從另一堆取幾個。
5. 應用:(也許格式會改變)
19 010011
7 000111
5 000101
3 000011
010010 (18)10
也就是,還要18才能變成“必負局”,所以50-18=32
所以第1次只能在第5堆石子中取32粒,使得取出32粒後為“必負局”,即異或運算結果為0。