結果

問題 No.1677 mæx
ユーザー maguroflymagurofly
提出日時 2021-09-11 00:03:25
言語 Ruby
(3.3.0)
結果
RE  
実行時間 -
コード長 4,470 bytes
コンパイル時間 279 ms
コンパイル使用メモリ 11,536 KB
実行使用メモリ 15,644 KB
最終ジャッジ日時 2023-09-03 01:41:59
合計ジャッジ時間 4,593 ms
ジャッジサーバーID
(参考情報)
judge14 / judge13
このコードへのチャレンジ
(要ログイン)

テストケース

テストケース表示
入力 結果 実行時間
実行使用メモリ
testcase_00 AC 87 ms
15,580 KB
testcase_01 AC 84 ms
15,540 KB
testcase_02 AC 84 ms
15,356 KB
testcase_03 RE -
testcase_04 TLE -
testcase_05 -- -
testcase_06 -- -
testcase_07 -- -
testcase_08 -- -
testcase_09 -- -
testcase_10 -- -
testcase_11 -- -
testcase_12 -- -
testcase_13 -- -
testcase_14 -- -
testcase_15 -- -
testcase_16 -- -
testcase_17 -- -
testcase_18 -- -
testcase_19 -- -
testcase_20 -- -
testcase_21 -- -
権限があれば一括ダウンロードができます
コンパイルメッセージ
Syntax OK

ソースコード

diff #

#
# DO NOT MODIFY!!!!
# This file is automatically generated by Racc 1.5.1
# from Racc grammar file "".
#

require 'racc/parser.rb'


require 'strscan'

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

class Parser < Racc::Parser

module_eval(<<'...end yc1677.rb.y/module_eval...', 'yc1677.rb.y', 79)

  # 初期化
  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

...end yc1677.rb.y/module_eval...
##### State transition tables begin ###

racc_action_table = [
     2,     5,     6,     7,     2,     2,     3,    15,    12,    13,
    14,    15,    12,    13,    14,     8,     9,    10,    18,    20 ]

racc_action_check = [
    10,     2,     2,     2,    18,     0,     1,    10,    10,    10,
    10,    18,    18,    18,    18,     3,     4,     9,    11,    19 ]

racc_action_pointer = [
     3,     6,    -6,    15,    13,   nil,   nil,   nil,   nil,    13,
    -2,    13,   nil,   nil,   nil,   nil,   nil,   nil,     2,    13,
   nil ]

racc_action_default = [
   -11,   -11,   -11,   -11,   -11,    -2,    -3,    -4,    21,   -11,
   -11,   -11,    -5,    -6,    -7,    -8,    -9,   -10,   -11,   -11,
    -1 ]

racc_goto_table = [
    11,     1,     4,   nil,   nil,   nil,   nil,   nil,    19 ]

racc_goto_check = [
     3,     1,     2,   nil,   nil,   nil,   nil,   nil,     3 ]

racc_goto_pointer = [
   nil,     1,     0,   -10,   nil ]

racc_goto_default = [
   nil,    16,   nil,   nil,    17 ]

racc_reduce_table = [
  0, 0, :racc_error,
  8, 14, :_reduce_1,
  1, 15, :_reduce_none,
  1, 15, :_reduce_none,
  1, 15, :_reduce_none,
  1, 17, :_reduce_5,
  1, 17, :_reduce_6,
  1, 17, :_reduce_7,
  1, 17, :_reduce_8,
  1, 16, :_reduce_none,
  1, 16, :_reduce_none ]

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",
  "m_x",
  "op",
  "expr",
  "primary" ]

Racc_debug_parser = false

##### State transition tables end #####

# reduce 0 omitted

module_eval(<<'.,.,', 'yc1677.rb.y', 5)
  def _reduce_1(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 2 omitted

# reduce 3 omitted

# reduce 4 omitted

module_eval(<<'.,.,', 'yc1677.rb.y', 18)
  def _reduce_5(val, _values, result)
     result = [1, 0, 0]
    result
  end
.,.,

module_eval(<<'.,.,', 'yc1677.rb.y', 19)
  def _reduce_6(val, _values, result)
     result = [0, 1, 0]
    result
  end
.,.,

module_eval(<<'.,.,', 'yc1677.rb.y', 20)
  def _reduce_7(val, _values, result)
     result = [0, 0, 1]
    result
  end
.,.,

module_eval(<<'.,.,', 'yc1677.rb.y', 21)
  def _reduce_8(val, _values, result)
     result = [1, 1, 1]
    result
  end
.,.,

# reduce 9 omitted

# reduce 10 omitted

def _reduce_none(val, _values, result)
  val[0]
end

end   # class Parser


S = gets.chomp
K = gets.to_i

parser = Parser.new(S)
res = parser.do_parse

puts res[K]
0