解説

以下の2点が重要なポイントです。

  • 長方形の板チョコをうまく分割すると、正方形の板チョコを作ることができる。
  • 正方形の板チョコを分割すると、必ず2つの長方形の板チョコになる。

持っている板チョコが長方形(HW)の場合持っている板チョコが長方形(H≠W)の場合
分割してできた正方形の板チョコを相手に渡すことで、必ず次の番に長方形の板チョコが戻ってきます。
この操作を繰り返すことで、相手に正方形の板チョコを渡し続けることができます。
最終的に相手に1111列の正方形の板チョコを渡すことができるため、勝利することができます。

持っている板チョコが正方形(H=W)の場合持っている板チョコが正方形(H=W)の場合
正方形の板チョコを分割してできた板チョコは必ず長方形であるため、相手に長方形の板チョコを渡すことになります。
相手が上記のように最適な手順をすることで、相手が勝利します。

初期状態の板チョコが長方形であればAAは勝利し、正方形であればBBが勝利します。
この判定はO(1)O(1)で可能です。
また、DPを用いることでO(HW)O(HW)で判定する方法でも間に合います。

解答例(C++)

#include <bits/stdc++.h>
using namespace std;

int main() {
    int H,W;
    cin>>H>>W;
    if(H==W) cout<<"B"<<endl;
    else cout<<"A"<<endl;
}