問題一覧 > 通常問題

No.792 真理関数をつくろう

レベル : / 実行時間制限 : 1ケース 2.000秒 / メモリ制限 : 512 MB / 標準ジャッジ問題
タグ : / 解いたユーザー数 170
作問者 : yusuke / テスター : ciel
3 ProblemId : 2331 / 出題時の順位表 / 自分の提出
問題文最終更新日: 2019-05-17 12:08:54

問題文


注: この問題の出力には非Ascii文字が含まれます。
含まれる非Ascii文字は次の通りです: ∧∨¬⊥⊤

N個の原子式P1,P2,,PNについて、次のような真理表を考える。

P1P2PNAQ1,1Q1,2Q1,NR1Q2,1Q2,2Q2,NR2Q2N,1Q2N,2Q2N,NR2N

Qi,j1または0であり、1なら真、0なら偽を表す。
また、Ri1または0であり、同様に真偽を表す。
このとき、この真理表で表される真理関数に対して妥当な論理式Aを出力しなさい。

入力

N
Q1,1Q1,2Q1,NR1
Q2,1Q2,2Q2,NR2

Q2n,1Q2n,2Q2n,NR2N

1N12
Qi,j,Ri(1i2N,1jN)はそれぞれ01

出力

入力された真理関数に対して妥当な論理式Aを出力しなさい。なお、出力の形式は次に従うこと。

  • "A=" から始める。
  • Piが真の場合、Pi、偽の場合は¬Piと出力しなさい。
  • すべてのiについてPiは出力上で"P_i"と表される。(iが何桁であろうが、例えばi=12のときP_12と表されます
  • Riが真の場合、真理表のi行目に基づいて、論理式Aに"(Q1Q2QN)"の形式で論理式を含めなさい。
    • ただし、Piが真のときQi は "P_i"、そうでないときQi は "¬P_i"を示す。
    • ここで含めた論理式をX1,X2,,XNとすると、論理式Aは"A=X1X2XN"の形で表す必要があります。
    • i>jのとき、XjXiよりも先に論理式Aに表すこと。
    • i>jのとき、QjQiよりも先に論理式Xkに表すこと。
  • すべてのiについてRiが真の場合、論理式Aは"A=⊤"と表される。(Tではない。⊤はトップと読む。)
  • すべてのiについてRiが偽の場合、論理式Aは"A=⊥"と表される。(⊥は矛盾式を表す。ボトムと読む。)

サンプル

サンプル1
入力
2
1 1 0
1 0 1
0 1 1
0 0 0
出力
A=(P_1∧¬P_2)∨(¬P_1∧P_2)

この場合、R2R3が真です。真理表の2行目と3行目より、P1かつP2でない場合、またはP1でないかつP2の場合にこの真理関数は真であることを示します。

サンプル2
入力
1
0 0
1 0
出力
A=⊥

どのiについてもRiが偽ですから、出力は上の通りになります。

サンプル3
入力
2
1 1 1
1 0 1
0 1 1
0 0 1
出力
A=⊤

どのiについてもRiが真ですから、出力は上の通りになります。

サンプル4
入力
4
1 1 1 1 0
1 1 1 0 1
1 1 0 1 0
1 1 0 0 1
1 0 1 1 0
1 0 1 0 1
1 0 0 1 0
1 0 0 0 1
0 1 1 1 0
0 1 1 0 1
0 1 0 1 0
0 1 0 0 1
0 0 1 1 0
0 0 1 0 1
0 0 0 1 0
0 0 0 0 1
出力
A=(P_1∧P_2∧P_3∧¬P_4)∨(P_1∧P_2∧¬P_3∧¬P_4)∨(P_1∧¬P_2∧P_3∧¬P_4)∨(P_1∧¬P_2∧¬P_3∧¬P_4)∨(¬P_1∧P_2∧P_3∧¬P_4)∨(¬P_1∧P_2∧¬P_3∧¬P_4)∨(¬P_1∧¬P_2∧P_3∧¬P_4)∨(¬P_1∧¬P_2∧¬P_3∧¬P_4)

サンプル5
入力
2
1 1 1
1 0 1
0 1 0
0 0 0
出力
A=(P_1∧P_2)∨(P_1∧¬P_2)

P2の真偽にかかわらず、P1のみで真偽が決定しますが、簡略せずに出力します。

提出するには、Twitter 、GitHub、 Googleもしくは右上の雲マークをクリックしてアカウントを作成してください。