100对黑白球问题的多种思路

《编程之美》的概率题:一个桶里面有白球、黑球各100个,现在按下述规则取球:
    i 、每次从通里面拿出来两个球;
    ii、如果取出的是两个同色的球,就再放入一个黑球;
    ii、如果取出的是两个异色的球,就再放入一个白球。
问:最后桶里面只剩下一个黑球的概率是多少?

第一种方案(只关注一种球的变化):
    i.如果取出的是两个白球,白球减少2个。
    ii.如果取出的是两个黑球,白球不变。
    iii.如果取出的是一黑一白,再放入一个白球,导致白球没变。
综上,白球的变化情况是2,0,0,所以白球只会存在偶数,不会单独的
存在一个白球,所以最后不可能剩下白球。那么剩下黑球的可能性就是0
或者100%100,因为这三种情况都是拿两个放一个,实际上只拿了一个,
那么最后一定会剩下一个球,这是按一个递减的,所以排除0的可能,那么
最后桶里面剩余黑球的可能性就是100%100,是不是很好理解呢?
扩展:
    如果桶里面有黑色球与白色球各101呢?
    先将100个黑球与100个白球按第一种方案得出剩余一个黑球,那么
    现在还剩余2个黑球与1个白球,要么1黑1白取两次,最后剩余白,
    要么2黑,黑白,剩余的依然是白球,所以剩余的是白球。
再扩展:
    偶数对黑球白球最后剩余的是黑球,奇数对黑球白球最后剩余的是
    白球。

第二种方案:
    黑球假设为0,白球假设为1。
    i.黑(0) ^ 白球(1) = 白球(1)
    ii.黑(0) ^ 黑(0)  = (黑)0
    ii.白(1) ^ 白(1)  = (黑)0
^0^0^0^...1^1^1^1^1 = ?
  0 ^ 0  = 0(黑球),得出结果是黑球。
扩展:
    (101对白黑球)
0^0^0^0^0^0....1^1^1^1^1^1=?
0 ^ 1 = 1(白球),得出结果是白球。
再扩展:
    同理易得。

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-08-07 23:13:28

100对黑白球问题的多种思路的相关文章

编程之美---桶中取黑白球

题目:有一个桶,里面有白球.黑球各100个,人们必须按照以下的规则把球取出来: 1.每次从桶里面拿出来两个球: 2.如果是两个同色的球,就再放入一个黑球: 3.如果是两个异色的球,就再放入一个白球: 问:最后桶里面只剩下一个黑球的概率是多少? 解法一:用黑白球各两个,来模拟,从小到多,化繁为简,进行分析和推断,找出其内在的规律,并归纳总结.推断出:每次减少一个球,每次拿球后,白球数要么不变,要么两个两个的减少.所以最后必然只剩一个黑球. 解法二:把黑球编号0,白球编号1,然后就相当于是异或操作了

CSDN 黑白球 (逻辑题)

题目意思:黑白球 http://student.csdn.net/mcs/question_detail/597 一个袋子里有两种颜色的球,黑色和白色,你每次从中取出两个球,如果是同色的,则在袋子里放一个白球,否则放回一个黑球. 最后袋子里剩下一个球,你能最后判断球的颜色么? 输入格式: 多组测试数据,每组数据一行,有两个数.W和B. (0<=W,B<=1000000000, W + B > 0),分别表示最初白球和黑球的个数. 输出格式: 如果你能确定最后一定剩余白球,输出WHITE,

快速排序的多种思路实现

快速排序的多种思路实现: 两边想中间靠拢: //  两边想中间靠拢,当a[left]<key a[right]>key时,两者交换 int PartSortBothSize(int *a, int left, int right) {  assert(a != NULL);  int key = a[right];  int begin = left;  int end = right - 1;  while (begin < end)  {   while (begin<end 

黑白球--智力测验

作者:iamlaosong 一个袋子里有两种颜色的球,黑色和白色,你每次从中取出两个球,如果是同色的,则在袋子里放一个白球,否则放回一个黑球. 最后袋子里剩下一个球,你能最后判断球的颜色么?或者说,你能给出判断最后一个球颜色的算法吗? 具体可见编程挑战:黑白球  ,先思考,不要看下面的分析. 分析: 按题意,无论拿出来什么样的组合,黑球的数量变化是:要么数量不变,要么去掉两个黑球,白球变化则无规律可循,可能少一个,也可能多一个.所以,可以你可以不考虑白球的数量,只考虑黑球的数量,黑球的数量会越来

算法题目------【一个桶内100个白球,100个黑球,最后一个是黑球的概率是多少?】

今天看到一个有意思的题目,听说是<编程之美>中的一道题,瞬间感觉自己又落后了很多.今天就拿出来分享下我在这道题目的感悟! 原题大意:一个桶内放有100个黑球,100个白球.按照下面的顺序拿出桶内的球: 1.每次拿出2个球: 2.若为同色球则放回一个黑色的球: 3.若为不同色的球则放回一个白球. 我第一眼看到大脑很兴奋,这不就是高中的时候的概率题目吗?然后就提笔开始下面的神算,结果我就不说了.反正是花了挺长时间的.后来翻看的他的答案,我瞬间有种跳楼的感觉.人间只用三言两语就搞定的问题,我花了长篇

多种思路解决Keepalived限制死20个VIP问题

由于业务需要,在部署LVS+Keepalived时,公司申请了一个C网段,让keepalived绑定254个VIP地址.满满的以为没有一点问题,但却遇到了keepalived限制死20 VIP的问题.刚开始一无所措,但经过思考,以及请教别人,得到了很多种思路,虽然有些思路并没解决问题,但思路本身就是很重要的,因为以后难免会用同样思路解决其他的问题. 问题现象如下: # tail /var/log/syslog Nov 12 18:15:34 Telcom-DG-WY-LVS-13-130 Kee

动态规划_基础_任意子区间序列求和问题_滑动窗口解法_多种思路_分治思想演变

题目描述 给出一段序列,选出其中连续且非空的一段使得这段和最大. 输入描述 第一行是一个正整数 N ( 1 ≤ N ≤ 200000 ) ,表示了序列的长度. 接下来的 N 行包含 N 个绝对值不大于 10000 的整数 A [ i ] ,描述了这段序列. 输出描述 仅包括 1 个整数,为最大的子段和是多少,子段的最小长度为 1 . 样例输入 72-43-12-43 样例输出 4 Hint Origin: SidneyEdit by stdKonjac in 2020 解题思路: 关于求子区间求

桶中取黑白球

题目:

投影和椭球

题记:工作之后遇到的各种GIS问题都一窍不通,大学老师们估计都会哭晕在厕所.为了不让他们继续流泪,我还是做点笔记吧. 这一切主要是有两个字引起的:投影. 投影发生在经纬度转成平面坐标(大地坐标XY)的时候,球面转成平面的时候. 投影的输入是经纬度,投影的输出是大地坐标,投影的过程或方法:其实就是投影方法以及各种椭球参数啦. 投影会发生形变所以是分带投影,一般分为3度带以及6度带,地球赤道长 40,076千米,所以分成30份(6度带),所以每个6度带大概1335千米,3度带就657千米,1度带大约