我遭遇的奥数难题(持续更新)

第一题

地上有四堆石子,石子数分别是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))




  • 4
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值