题目意思:黑白球
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;
}原文:http://blog.csdn.net/fool_ran/article/details/42013305