#include #include using namespace std; // 第 1 引数に変数、第 2 引数に値をとる // 両者のうち小さい方で変数 variable を更新 template constexpr T chmin(T& variable, const T value) noexcept { if (variable < value) return variable; else return (variable = value); } int main() { cin.tie(nullptr); ios::sync_with_stdio(false); uint64_t T, X; char S[100'001]; cin >> T >> X >> S; chmin(T, UINT64_C(60)); // T が 60 より大きい意味はない(解説参照)ので、あらかじめ小さくしておく const char* p = S; --X; while (X != 0) { const auto L = 5 * (UINT64_C(1) << T) - 4; // なぜか switch 文の中で変数宣言できないので、ここでしておく switch (*p) { case 'w': if (T != 0 && X < L) --T, p = "warong"; else X -= L, ++p; break; case 'a': if (T != 0 && X < L) --T, p = "answer"; else X -= L, ++p; break; default: --X, ++p; break; } } cout << *p << '\n'; return 0; }