結果
| 問題 | 
                            No.1677 mæx
                             | 
                    
| コンテスト | |
| ユーザー | 
                             | 
                    
| 提出日時 | 2021-09-11 00:15:42 | 
| 言語 | Ruby  (3.4.1)  | 
                    
| 結果 | 
                             
                                TLE
                                 
                             
                            
                         | 
                    
| 実行時間 | - | 
| コード長 | 4,328 bytes | 
| コンパイル時間 | 51 ms | 
| コンパイル使用メモリ | 7,680 KB | 
| 実行使用メモリ | 80,804 KB | 
| 最終ジャッジ日時 | 2024-06-12 19:04:38 | 
| 合計ジャッジ時間 | 5,150 ms | 
| 
                            ジャッジサーバーID (参考情報)  | 
                        judge5 / judge3 | 
(要ログイン)
| ファイルパターン | 結果 | 
|---|---|
| sample | AC * 4 | 
| other | TLE * 2 -- * 16 | 
コンパイルメッセージ
Syntax OK
ソースコード
#
# DO NOT MODIFY!!!!
# This file is automatically generated by Racc 1.5.1
# from Racc grammar file "".
#
require 'racc/parser.rb'
require 'strscan'
class Parser < Racc::Parser
  # 初期化
  def initialize(input)
    @scanner = StringScanner.new(input)
  end
  
  # 自動的に呼び出される
  def next_token
    return nil if @scanner.eos?
    if (s = @scanner.scan(/[012maex?(),]/))
      [s, s]
    else
      nil
    end
  end
##### State transition tables begin ###
racc_action_table = [
     4,    11,    12,    13,     4,     9,    14,     8,     5,     6,
     7,     8,     5,     6,     7,     4,    15,    16,    18,    20,
   nil,   nil,     8,     5,     6,     7 ]
racc_action_check = [
     0,     4,     4,     4,    16,     1,     9,     0,     0,     0,
     0,    16,    16,    16,    16,    18,    10,    15,    17,    19,
   nil,   nil,    18,    18,    18,    18 ]
racc_action_pointer = [
    -2,     5,   nil,   nil,    -6,   nil,   nil,   nil,   nil,     6,
    13,   nil,   nil,   nil,   nil,    13,     2,    13,    13,    13,
   nil ]
racc_action_default = [
   -11,   -11,    -1,    -2,   -11,    -7,    -8,    -9,   -10,   -11,
   -11,    -4,    -5,    -6,    21,   -11,   -11,   -11,   -11,   -11,
    -3 ]
racc_goto_table = [
     1,    10,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
   nil,   nil,   nil,   nil,   nil,   nil,    17,   nil,    19 ]
racc_goto_check = [
     1,     4,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
   nil,   nil,   nil,   nil,   nil,   nil,     1,   nil,     1 ]
racc_goto_pointer = [
   nil,     0,   nil,   nil,    -3 ]
racc_goto_default = [
   nil,   nil,     2,     3,   nil ]
racc_reduce_table = [
  0, 0, :racc_error,
  1, 14, :_reduce_none,
  1, 14, :_reduce_none,
  8, 15, :_reduce_3,
  1, 17, :_reduce_none,
  1, 17, :_reduce_none,
  1, 17, :_reduce_none,
  1, 16, :_reduce_7,
  1, 16, :_reduce_8,
  1, 16, :_reduce_9,
  1, 16, :_reduce_10 ]
racc_reduce_n = 11
racc_shift_n = 21
racc_token_table = {
  false => 0,
  :error => 1,
  "m" => 2,
  "x" => 3,
  "(" => 4,
  "," => 5,
  ")" => 6,
  "a" => 7,
  "e" => 8,
  "?" => 9,
  "0" => 10,
  "1" => 11,
  "2" => 12 }
racc_nt_base = 13
racc_use_result_var = true
Racc_arg = [
  racc_action_table,
  racc_action_check,
  racc_action_default,
  racc_action_pointer,
  racc_goto_table,
  racc_goto_check,
  racc_goto_default,
  racc_goto_pointer,
  racc_nt_base,
  racc_reduce_table,
  racc_token_table,
  racc_shift_n,
  racc_reduce_n,
  racc_use_result_var ]
Racc_token_to_s_table = [
  "$end",
  "error",
  "\"m\"",
  "\"x\"",
  "\"(\"",
  "\",\"",
  "\")\"",
  "\"a\"",
  "\"e\"",
  "\"?\"",
  "\"0\"",
  "\"1\"",
  "\"2\"",
  "$start",
  "expr",
  "m_x",
  "primary",
  "ae_" ]
Racc_debug_parser = false
##### State transition tables end #####
# reduce 0 omitted
# reduce 1 omitted
# reduce 2 omitted
def _reduce_3(val, _values, result)
          result =
            case val[1]
            when 'a'
              max(val[4], val[6])
            when 'e'
              mex(val[4], val[6])
            when '?'
              m_x(val[4], val[6])
            end
    result
end
# reduce 4 omitted
# reduce 5 omitted
# reduce 6 omitted
def _reduce_7(val, _values, result)
 result = [1, 0, 0]
    result
end
def _reduce_8(val, _values, result)
 result = [0, 1, 0]
    result
end
def _reduce_9(val, _values, result)
 result = [0, 0, 1]
    result
end
def _reduce_10(val, _values, result)
 result = [1, 1, 1]
    result
end
def _reduce_none(val, _values, result)
  val[0]
end
end   # class Parser
MOD = 998244353
def max(x, y)
  res = [0, 0, 0]
  (0 .. 2).each do |a|
    (0 .. 2).each do |b|
      c = [a, b].max
      res[c] += x[a] * y[b]
      res[c] %= MOD
    end
  end
  res
end
MEX = [
  [1, 2, 1],
  [2, 0, 0],
  [1, 0, 0]
]
def mex(x, y)
  res = [0, 0, 0]
  (0 .. 2).each do |a|
    (0 .. 2).each do |b|
      c = MEX[a][b]
      res[c] += x[a] * y[b]
      res[c] %= MOD
    end
  end
  res
end
def m_x(x, y)
  res = [0, 0, 0]
  (0 .. 2).each do |a|
    (0 .. 2).each do |b|
      c = MEX[a][b]
      res[c] += x[a] * y[b]
      res[c] %= MOD
      c = [a, b].max
      res[c] += x[a] * y[b]
      res[c] %= MOD
    end
  end
  res
end
S = gets.chomp
K = gets.to_i
parser = Parser.new(S)
res = parser.do_parse
puts res[K]