📄 2400.cpp
字号:
/* This Code is Submitted by wywcgs for Problem 2400 on 2006-10-10 at 16:12:10 */
#include <cstdio>
#include <cctype>
#include <algorithm>
using namespace std;
const int L = 128, S = 1 << 6;
int value(char*&, int);
int A(int a, int b) { return a || b; }
int K(int a, int b) { return a && b; }
int N(int a) { return !a; }
int C(int a, int b) { return (!a) || b; }
int E(int a, int b) { return a == b; }
int main()
{
char w[L];
while(gets(w) != NULL && w[0] != '0') {
bool can = true;
for(int s = 0; s < S; s++) {
char* p = w;
if(value(p, s) == 0) { can = false; break; }
}
printf(can ? "tautology\n" : "not\n");
}
return 0;
}
int value(char*& w, int s)
{
char c = *(w++);
if(islower(c)) return (s>>(c-'p'))&1;
switch(c) {
case 'K': return K(value(w, s), value(w, s));
case 'A': return A(value(w, s), value(w, s));
case 'N': return N(value(w, s));
case 'C': return C(value(w, s), value(w, s));
case 'E': return E(value(w, s), value(w, s));
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -