はまやんはまやんはまやん

hamayanhamayan's blog

575ゲーム [Kotamanegi Online Judge No.67]

https://kotamanegi.com/Problems/view/?page=67

解法

https://kotamanegi.com/Submission/view/index.php?SubmissionID=1509

ゲームの後退解析のように解いていく。
chk(f,s) := 5文字の単語がf個、7文字の単語がs個でターンが回ってきたときに勝てるか
もし、2≦fかつ1≦sであれば、発声して相手にターンを渡せる。
その場合の自分の勝敗は、相手のターンが勝ち状態なら負け、負け状態なら勝ちの遷移先と逆になる。

int F, S;
//---------------------------------------------------------------------------------------------------
int chk(int f, int s) {
    if (f < 2 or s < 1) return 0;
    return 1 - chk(f - 2, s - 1);
}
//---------------------------------------------------------------------------------------------------
void _main() {
    cin >> F >> S;

    if (chk(F, S)) printf("O\n");
    else printf("K\n");
}