AT2400 [ARC072B] Alice&Brown 题解

· · 题解

题目传送门

题意:

有两堆石子,数量分别为 a b,Alice 先手,在能拿的前提下,每人每次能拿 2n(n\ge1) 个石子,求谁最后一次拿。

思路:

如果 \left | a-b \right | =1 ,那么 Alice 将会一直遭遇 \left | a-b \right | =1 的情况,某次轮到 Alice 时,一堆为 1,另一堆为 0,Alice 败。

如果 \left | a-b \right | =0 ,那么在轮到 Brown 时,将会一堆为 3,另一堆为 0,轮到 Alice 时,就会有两堆都是 1 的情况,即 \left | a-b \right | =0 , Alice 败。

其他情况 Alice 都会赢,于是就可以直接 \Theta(1) 解决,如果 \left | a-b \right | \le 1 , Brown 胜,否则 Alice 胜。

AC Code:

#include<iostream>
#include<cstring>
#include<cstdio>
#include<cmath>
#include<algorithm>
using namespace std;
int main()
{
  ios::sync_with_stdio(0);
  cin.tie(0);
  cout.tie(0);
  long long a,b;
  cin>>a>>b;
  if(abs(a-b)<=1)
    cout<<"Brown\n";
  else
    cout<<"Alice\n";
  return 0;
}

帮忙点个赞吧!蟹蟹!