黑球,白球各100,问最后剩下一个是黑球的概率。
2013-09-23 21:50
447 查看
题目:有一个桶,里面有白球、黑球各100个,人们必须按照以下的规则把球取出来:
1、每次从桶里面拿出来两个球;
2、如果是两个同色的球,就再放入一个黑球;
3、如果是两个异色的球,就再放入一个白球;
问:最后桶里面只剩下一个黑球的概率是多少?
解法一:
我们可一个用一个set(黑球数量,白球数量)来表示桶中的黑球和白球的个数。从桶中取出球后,只可能是下列三种操作:
取出的是两个黑球,则放回一个黑球:(-2, 0) + (1, 0) = (-1, 0)
取出的是两个白球,则放回一个黑球:(0, -2) + (1, 0) = (1, -2)
取出的是一黑一白,则放回一个白球:(-1, -1) + (0, 1) = (-1, 0)
根据上面的规则,我们可以发现:白球的数量变化情况只能是不变或者-2,也就是说,如果是100个白球,白球永远不可能是1个的情况,那么问题的解法就很简单了,就是只剩下黑球的概率为100%
解法二:
两个相同的球异或等于0,两个不同的球异或等于1
将黑球赋为0 白球赋为1.
下面给出异或运算的一些常识:
异或运算规律:
1)偶数个1异或,结果为0;
2)偶数个0异或,结果为0;
3)奇数个1异或,结果为1;
4)奇数个0异或,结果为0:
可以作这样的抽象:每次捞出两个数字做一次异或操作,并将所得的结果丢回桶中。
因此最后的结果实际上相当于把所有的球都进行一次异或运算,最后所得的结果即为最后剩余的球。
就有可能是0 xor 1 xor 1 ……之类的情况,又因为异或满足结合律,上式可变为:
(0 xor 0 ……xor 0) xor (1 xor 1 ……xor 1)两边都是100个,结果就是0
所以只能是黑球
扩展问题:
1.如果桶中的球分别为99个,那么结果会怎样?
根据异或的结果 最后的球一定是白球
2.如果黑白球的数量不定,结果又会怎样?
a个白球 b个黑球
a为奇数时异或为1,a为偶数时异或为0
b无论奇偶都是0
所以当白球为奇数时,最后一定取出白球,白球为偶数时,最后一定取出黑球。
1、每次从桶里面拿出来两个球;
2、如果是两个同色的球,就再放入一个黑球;
3、如果是两个异色的球,就再放入一个白球;
问:最后桶里面只剩下一个黑球的概率是多少?
解法一:
我们可一个用一个set(黑球数量,白球数量)来表示桶中的黑球和白球的个数。从桶中取出球后,只可能是下列三种操作:
取出的是两个黑球,则放回一个黑球:(-2, 0) + (1, 0) = (-1, 0)
取出的是两个白球,则放回一个黑球:(0, -2) + (1, 0) = (1, -2)
取出的是一黑一白,则放回一个白球:(-1, -1) + (0, 1) = (-1, 0)
根据上面的规则,我们可以发现:白球的数量变化情况只能是不变或者-2,也就是说,如果是100个白球,白球永远不可能是1个的情况,那么问题的解法就很简单了,就是只剩下黑球的概率为100%
解法二:
两个相同的球异或等于0,两个不同的球异或等于1
将黑球赋为0 白球赋为1.
下面给出异或运算的一些常识:
异或运算规律:
1)偶数个1异或,结果为0;
2)偶数个0异或,结果为0;
3)奇数个1异或,结果为1;
4)奇数个0异或,结果为0:
可以作这样的抽象:每次捞出两个数字做一次异或操作,并将所得的结果丢回桶中。
因此最后的结果实际上相当于把所有的球都进行一次异或运算,最后所得的结果即为最后剩余的球。
就有可能是0 xor 1 xor 1 ……之类的情况,又因为异或满足结合律,上式可变为:
(0 xor 0 ……xor 0) xor (1 xor 1 ……xor 1)两边都是100个,结果就是0
所以只能是黑球
扩展问题:
1.如果桶中的球分别为99个,那么结果会怎样?
根据异或的结果 最后的球一定是白球
2.如果黑白球的数量不定,结果又会怎样?
a个白球 b个黑球
a为奇数时异或为1,a为偶数时异或为0
b无论奇偶都是0
所以当白球为奇数时,最后一定取出白球,白球为偶数时,最后一定取出黑球。
相关文章推荐
- 《编程之美》:黑球,白球各100,问最后剩下一个是黑球的概率
- 《编程之美》中黑球,白球各100,问最后剩下一个是黑球的概率
- 《编程之美》中黑球,白球各100,问最后剩下一个是黑球的概率
- 有100个人围成一个圈,从1开始报数,报到14的这个人就要退出, 然后其他人重新开始,从1报数,到14退出。问:最后剩下的是100人中的第几个人?
- 有 100 个人围成一个圈,从 1 开始报数,报到 14 的这个人就要退出。然后其他人重新开始, 从 1 报数,到 14 退出。问:最后剩下的是 100 人中的第几个人?
- 从1到100,每数到7的时候,把该数字提出来,剩下的数字继续循环,问最后剩下的一个数字是多少。
- 有100个人围成一个圈,从1开始报数,报到14的这个人就要退出。然后其他人重新开始,从1报数,到14退出。问:最后剩下的是100人中的第几个人?
- 1 -100 100个数组成一个圈, 每隔二个去掉一个数字,这样一直循环,最后剩下哪个数字
- 随机生成一个0到100的数,让用户猜,允许猜5次,每次猜大了或猜小了,都要给出提示,最后给出正确答案
- 有一个长度为n(n<=100)的数列,该数列定义为从2开始的递增有序偶数(2,4,6,8,10,…),现在要求你按照顺序每m个数求出一个平均值,如果最后不足m个,则以实际数量求平均值。编程输出该平均值
- 【2015广东工业大学新生赛F】【脑洞 DP打表找规律】有钱的wingkou 取走2个放回1个问最后剩下为0的概率
- 程序员面试题精选100题(14)-圆圈中最后剩下的数字
- 程序员面试题精选100题(14)-圆圈中最后剩下的数字
- 动态规划-最后剩下的是红糖的概率问题
- 圆圈中最后剩下的一个数
- 从1-100中隔5个数去掉一个数,最后去掉的哪个数(如果数过一遍了从前端接着开始)?
- 圆圈中最后剩下的数字 【微软面试100题 第十八题】
- 一个概率题:54张扑克牌,除去两张大小王剩下52张扑克牌。问红桃A和黑桃A同时被一个人拿到的概率是多少?
- 有n个人(1到n号)围成一个圈,从第1号按顺序报数(1-3),每报数为3的人从队伍去除,下个人继续从1开始报数,问最后剩下的那个人原来排在第几位- java
- 猴子选大王,有1-100个数字,每数6位删除一个,顺序循环,最后只有一个数字的时候是1-100中的几?