题目链接:Box Game
题面:
Input
There will be at most 300 test cases. Each test case contains an integer n (2 ≤ n ≤ 109) in a single
line. The input terminates by n = 0.
Output
For each test case, print a single line, the name of the winner.
Sample Input
2
3
4
0
Sample Output
Alice
Bob
Alice
解题:
博弈基本不会,这道题很好推,先模拟一下发现1,3,7为必输态,只要后面的情况能够让分解为之前的必输态给Bob那么都是Alice赢,很容易推出下一必输态为15。因为此时最小只能得到8了。这道题也可以找规律,1,3,7,15,31...总是2^n-1。
代码:
#include <iostream>
using namespace std;
int main()
{
int n;
while(cin>>n&&n)
{
bool flag=true;
while(n)
{
if((n-1)%2)
{
flag=false;
break;
}
n=(n-1)/2;
}
if(flag)cout<<"Bob\n";
else cout<<"Alice\n";
}
}版权声明:本文为博主原创文章,未经博主允许不得转载。
原文地址:http://blog.csdn.net/david_jett/article/details/46822991