結果

問題 No.792 真理関数をつくろう
ユーザー nadeshino
提出日時 2019-02-22 21:54:59
言語 Nim
(2.2.0)
結果
AC  
実行時間 13 ms / 2,000 ms
コード長 1,442 bytes
コンパイル時間 3,793 ms
コンパイル使用メモリ 71,424 KB
実行使用メモリ 5,376 KB
最終ジャッジ日時 2024-07-01 19:27:03
合計ジャッジ時間 4,758 ms
ジャッジサーバーID
(参考情報)
judge4 / judge2
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 4
other AC * 22
権限があれば一括ダウンロードができます
コンパイルメッセージ
/home/judge/data/code/Main.nim(1, 19) Warning: Use the new 'sugar' module instead; future is deprecated [Deprecated]
/home/judge/data/code/Main.nim(48, 5) Warning: use `delete(s, first..last)`; delete is deprecated [Deprecated]
/home/judge/data/code/Main.nim(1, 8) Warning: imported and not used: 'algorithm' [UnusedImport]
/home/judge/data/code/Main.nim(1, 19) Warning: imported and not used: 'future' [UnusedImport]
/home/judge/data/code/Main.nim(1, 27) Warning: imported and not used: 'hashes' [UnusedImport]

ソースコード

diff #

import algorithm, future, hashes, macros, math, sequtils, sets, strutils, tables, unicode

template readString: string = stdin.readLine
template readStrings: seq[string] = stdin.readLine.split
template readInt: int = stdin.readLine.parseInt
template readInts: seq[int] = readLine(stdin).split(" ").map(parseInt)
template readFloat: float = stdin.readLine.parseFloat
template readFloats: seq[float] = stdin.readLine.split.map(parseFloat)
template times(n: int, body: untyped): untyped = (for _ in 0..<n: body)
proc newSeq2[T](n1, n2: Natural): seq[seq[T]] = newSeqWith(n1, newSeq[T](n2))
proc newSeq3[T](n1, n2, n3: Natural): seq[seq[seq[T]]] = newSeqWith(n1, newSeqWith(n2, newSeq[T](n3)))

macro unpack*(rhs: seq, cnt: static[int]): auto =
  let t = genSym(); result = quote do:(let `t` = `rhs`;())
  for i in 0..<cnt: result[0][1].add(quote do:`t`[`i`])

# -------------------------------------------------- #

var N = readInt
var res = "A="
var cnt = 0
for i in 1..(2 ^ N):
  var QR = @[0] & readInts
  if QR[N + 1] == 1:
    cnt += 1
    res.add("(")
    for j in 1..<N:
      if QR[j] == 0:
        res.add("¬")
      res.add("P_")
      res.add(j.intToStr(1))
      res.add("∧")
    if QR[N] == 0:
      res.add("¬")
    res.add("P_")
    res.add(N.intToStr(1))
    res.add(")∨")

if cnt == 2 ^ N:
  res = "A=⊤"
  echo res
  quit()
if cnt == 0:
  res = "A=⊥"
  echo res
  quit()

res.delete(res.len - 3, res.len - 1)
echo res
0