問題概要
オセロの盤面が与えられる。次の手番の色を予測せよ。
解法
盤面にある個数の偶奇から次の番がわかる。 こういうのはxorで一行に収められる。
計算量:$O(1)$
ソース
#include <bits/stdc++.h> using namespace std; #define FOR(i, s, e) for (int(i) = (s); (i) < (e); (i)++) int main() { cin.tie(0); ios_base::sync_with_stdio(false); string s; cin >> s; string y = "yukiko"; string o = "oda"; vector<string>m(8); int cnt = 0; FOR(i, 0, 8) { cin >> m[i]; FOR(j, 0, 8)if (m[i][j] == '.') { cnt++; } } cout << ((s != o) ^ (cnt % 2) ? y : o) << endl; return 0; }