문제:
https://www.acmicpc.net/problem/11867
11867번: 박스 나누기 게임
첫째 줄에 N과 M이 주어진다. (1 ≤ N, M ≤ 100, N과 M이 모두 1인 경우는 없다)
www.acmicpc.net
코드:
#include <bits/stdc++.h>
using namespace std;
int arr[101];
int main(void) {
ios::sync_with_stdio(0);
cin.tie(0);
int n, m;
cin >> n >> m;
if (n % 2 != 0 && m % 2 != 0) {
if (n == 1 && m == 1) {
cout << "A";
return 0;
}
cout << "B";
}
else {
cout << "A";
}
}
두 입력을 고려하지 않고 한 입력만을 고려하여 최선의 게임을 진행한다 가정하면
2 -> a
3 -> b
4 -> a
...
홀수일때는 b가 승리 짝수일때는 a가 승리하게 된다.
그러나 우리가 고려해야 할 상황은 입력이 두개인 경우이다.
A가 첫 시작이기 때문에 입력 중 짝수가 존재한다면 짝수를 선택해 최선의 게임을 진행하므로 A가 승리한다.
따라서 입력이 모두 홀수 인 경우 B를 출력하고 그 외에는 A를 출력한다.
이때 1 1이 입력인 경우 둘 다 홀수이나 나눌 수 없어 처음 시작한 A가 승리하므로 예외처리한다.