TopCoder

FHVirus
想像不出自己 AC 的題目是實作不出來的!

User's AC Ratio

92.9% (91/98)

Submission's AC Ratio

33.3% (102/306)

Tags

Description

「若PQ。」這樣形式的句子常常在日常生活中的對話出現。但是這句話卻也蘊含了另一個等價的句子:「若非Q則非P。」
舉個例子吧,「若 "今天下雨" 則 "某甲帶傘"。」這句話蘊含著「若 "某甲不帶傘",則 "今天不下雨" 。」

講得更精確一點,若命題A為「若PQ」,那麼他和命題B「若非Q則非P」具有相同意義。我們說命題B是命題A的逆否命題

而現在,我們把這個句子寫成英文句子如下:

     IF P THEN Q

上面這個句子跟

     IF not Q THEN not P

是等價的。

有時候,只要讓PQ同時成立,就可以達成目標R。這時候命題可以寫成「若PQ,則R。」
如果從另一個角度來解釋的話,如果R不能成立,那麼必定有 "P不成立或者Q不成立" ,因此原命題的等價逆否命題為「若非R則非P或非Q。」

舉個例子來說:「若同時 "吃蔬菜" 以及 "吃水果",才能 "保持健康" 」,那麼「 "不保持健康" 的人,一定 "沒吃蔬菜" 或 "沒吃水果"」。

如果只有PQ其中之一成立,就可以使R成立的話,命題可以寫成「若PQ,則R。」
相同地可以寫出其逆否命題為「若非R則非P且非Q。」

舉個例子來說:「若只要 "聽老闆的話" 或者 "認真工作",就能 "領高薪"」,那麼「 "不能領高薪" 的人一定 "沒聽老闆的話" 也 "沒認真工作"」。

注意到兩個例子的不同之處了嗎?那麼,請你寫個程式來求出一個命題的逆否命題吧!

Input Format

輸入檔的第一列有一個正整數n(1<=n<=10,000),代表有幾個命題需要處理。
第二列開始每一列有一個命題,每一個命題都形如

IF (敘述) THEN (敘述)
每一個敘述可能是一或兩個單純敘述所組合而成。所謂「單純敘述」將以一個大寫英文字母表示之。

兩個單純敘述之間會有一個邏輯符號 and 或者是 or 連結,代表這兩個單純敘述之間的關係。一個單純敘述的前面可能接著代表否定意義的 not。你可以假設每一個命題都是有意義的,不會有不合法的命題。
請參考範例輸入,表達能力不夠好敬請見諒m(_ _)m。

Output Format

對於每一個命題,請輸出其逆否命題,一個一列,請不要輸出多餘的空白。形式請參考範例輸出。

Sample Input 1

5
IF A THEN B
IF B THEN not C
IF A and B THEN C
IF B or A THEN C
IF not Q THEN not P

Sample Output 1

IF not B THEN not A
IF C THEN not B
IF not C THEN not A or not B
IF not C THEN not B and not A
IF P THEN Q

Hints

IF 和 THEN 永遠是大寫,not,and,or永遠是小寫 :)

Problem Source

原TIOJ1018 / Problem Setter: Tmt, TimeString, TDYa127

Subtasks

No. Testdata Range Score
1 0 100

Testdata and Limits

No. Time Limit (ms) Memory Limit (VSS, KiB) Output Limit (KiB) Subtasks
0 1000 65536 262144 1