首页 > 代码库 > CSDN 黑白球 (逻辑题)
CSDN 黑白球 (逻辑题)
题目意思:黑白球
http://student.csdn.net/mcs/question_detail/597
一个袋子里有两种颜色的球,黑色和白色,你每次从中取出两个球,如果是同色的,则在袋子里放一个白球,否则放回一个黑球。
最后袋子里剩下一个球,你能最后判断球的颜色么?
输入格式:
多组测试数据,每组数据一行,有两个数。W和B。 (0<=W,B<=1000000000, W + B > 0),分别表示最初白球和黑球的个数。
输出格式:
如果你能确定最后一定剩余白球,输出WHITE,如果能确定最终一定剩余黑球,则输出BLACK,否则输出UNKNOWN。
题目分析:分情况进行取球就行了,(刚开始也没有想,就直接看题目的思路提示)
取球的情况分为三种:
1、取一黑一白,放回一个黑球,相当于取出一个白球。
2、取两个白球,放回一个白球,相当于取出一个白球。
3、取两个黑球,放回一个白球,相当于取出两个黑球,放回一个白球。
通过上述分析我们发现白球可以每次取出一个,而黑球只能成对取出,很显然我们对黑球个数进行分析。当黑球个数为奇数时,黑球必然无法取尽,最后剩下一个黑球,白球无论有多少,通过前两种方法每次取出一个,都可以逐个取出,直到取尽,最后剩下一个黑球。
当黑球个数为偶数是=时,若黑球先去尽,则剩下白球,根据第二种情况每次取出一个白球,最后剩下一个白球无法取出;若黑球没有取尽,白球按照前两种情况取尽,最后余下两个黑球,那么最后又=一次根据情况三取出两个黑球放回一个白球,最后还是剩下一个白球。
AC代码:
#include<iostream> using namespace std; int main() { long long w,b; while(cin>>w>>b){ if(w==1&&b==0){ cout<<"WHITE"<<endl; continue; } if(w==0&&b==1){ cout<<"BLACK"<<endl; continue; } if(b%2==0) cout<<"WHITE"<<endl; else cout<<"BLACK"<<endl; } return 0; }
CSDN 黑白球 (逻辑题)
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。