题目意思:黑白球
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; }
时间: 2024-10-05 15:17:08