第一题
地上有四堆石子,石子数分别是1、9、15、31。如果每次从其中的三堆同时各取出1个,然后都放入第四堆中,那么,能否经过若干次操作,使得四堆石子的个数都相同?(如果能,请说明具体操作,不能则要说明理由)
这是一道小学5,6年级的奥数题。我们试着解看看
解法一(小学生):
每次操作后,四堆石头的数量变化永远是三个-1,一个+3,也就是石头堆之间的数量差要么保持不变,要么数量差为4。但是1和15之间相差14,9和15之间相差6,无论怎么移动,他们之间的数量差都没办法变为0。所以,答案是不能。
解法二(初中高中):
假设可以实现,则最后四堆石头的个数都是(1+9+15+31)/4=14个
设总的移动次数为n,初始石头数为1的加3的次数为x,则减1的次数为n-x;
初始石头数为9的加3的次数为y,则减1的次数为n-y;
初始石头数为15的加3的次数为z,则减1的次数为n-z;
这里n,x,y,z都是正整数
则可以得知:
1+3x-(n-x)=14 (1)
9+3y-(n-y)=14 (2)
15+3z-(n-z)=14 (3)
用(3)-(1)得:
6 +3(z-y)+(z-y) =0
所以 z - y = -3/2 显然两个整数的差不可能是-3/2。所以答案是不可能。
解法三(编程):
编一段代码来实现这个操作:
一秒钟即可进行几十万次计算的计算机,迟迟没有答案,所以不可能。
import random
a = 1
b = 11
c = 15
d = 31
n = 0
while True:
e = random.randrange(0,4)
if e == 0:
a += 3
b -= 1
c -= 1
d -= 1
if e == 1:
a -= 1
b += 3
c -= 1
d -= 1
if e == 2:
a -= 1
b -= 1
c += 3
d -= 1
if e == 3:
a -= 1
b -= 1
c -= 1
d += 3
n += 1
if a <= 0 or b <= 0 or c <= 0 or d <= 0:
a = 1
b = 11
c = 15
d = 31
if a == b == c == d:
break
print("第" + str(n) + "次操作" + ","+ str(a) + "," + str(b) + "," + str(c) + "," + str(d))