编程之美4.6 桶中取黑球

一个桶中有白球、黑球各100个,按照以下规则将球取出来:

1:每次从桶里拿两个球

2:如果是两个同色的球,就再放入一个黑球

3:如果是两个异色的球,就再放入一个白球

问最后只剩下一个黑球的概率


解法一:

每次取球可能有三种情况

1) 两个黑球,则再放入一个黑球,总体少了一个黑球

2) 两个白球,则再放入一个黑球,总体少了两个白球

3) 一黑一白,则再放入一个白球,总体少了一个黑球

从上面三种结果可以看出,对于白球,每次少两个或者不变,又原来白球的个数是100个,所以最终白球的个数为0,因此只可能剩下黑球


解法二:

这种解法比较巧妙,从两种规则中联想到数学中的异或,两个相同的数疑惑得到0,不同的数疑惑得到1

从规则出发,可以假设黑球为0,白球为1,刚好符合异或规则

所以取球的过程就相当于把里面的所有球进行异或操作,从而可以得到最后剩下一个黑球


扩展问题

1:桶中黑白球各位99个

利用解法一:由于白球的个数为奇数,最后肯定只剩下一个白球

利用解法二:1的个数为奇数,故异或得到的结果为1,即最后剩下一个白球


2:黑白球个数不定

同样的推导

利用解法一:若白球的个数为奇数,最后肯定只剩下一个白球;若若白球的个数为偶数,最后肯定只剩下一个黑球

利用解法二:若白球的个数为奇数,则1的个数为奇数,故异或得到的结果为1,即最后剩下一个白球;若白球的个数为偶数,则1的个数为偶数,故异或得到的结果为0,即最后剩下一个黑球


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值