100个黑球和100个白球问题---扩展思维

一个袋子里有100个黑球和100个白球,每次从袋子里面取出两个球扔掉,再放入一个特定颜色的球。

规则如下:如果取出的两个球颜色相同,则放入袋中一个白球;如果不同,则放入一个黑球。

问题:最后剩余的一个球的颜色是黑色还是白色?

方法一:

黑球◊黑球=白球

白球◊白球=白球

黑球◊白球=黑球

设黑球为1,白球为0:

1◊1=0

0◊0=0

1◊0=1

则原来的操作抽象为:对100个1和100个0做无序的异或操作。

则(1^1^...^1)[100] ^(0^0^...^0)[100]简化为 0^0=0。

故最终剩下白球。

 

方法二:

1)从数量上看,不管怎么操作,每次数量-1,所以最终剩下1个球;

2)3个原子操作如下:
A)出2白球,进一个白球;此时增量delta=-1白球
B)出2个黑球,进一个白球;此时增量delta=-2黑球+1白球
C)出1个黑球,出1个白球,进一个黑球;此时增量delta=-1白球

 反证法:

设三个操作进行的次数为x,y,z,且假设最后剩下的是一个黑球,则有:
100白球+100黑球+x*(-1白球)+y*(-2黑球+1白球)+z*(-1白球)=1黑球
求得2y=99黑球,y不为整数。矛盾。
故最终剩下白球。

 

方法三:

整个过程初始状态为:100个黑球和100个白球;

结合方法二,整个过程有三个原子操作;

问题即为求最终状态。

对状态机比较熟的同学可以试试。

 

一个小例子,可以看出大家的建模能力以及逆向思维能力。虽然简单,却很经典。

转载于:https://www.cnblogs.com/wentfar/archive/2012/09/04/2670106.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值