4633540_ac_141ms_216k.cpp

来自「部分PKU上的源码」· C++ 代码 · 共 50 行

CPP
50
字号
#include<iostream>
#include<string>
using namespace std;
bool p,q,r,s,t;
int now;
bool check(string ss)
{
	now++;
	bool w,x,result;
	switch(ss[now])
	{
	case 'p':result=p;break;
	case 'q':result=q;break;
	case 'r':result= r;break;
	case 's':result= s;break;
	case 't':result= t;break;
	case 'K':w=check(ss);x=check(ss);result=w&&x;break;
	case 'A':w=check(ss);x=check(ss);result=w||x;break;
	case 'N':result=!check(ss);break;
	case 'C':w=check(ss);x=check(ss);
		if(w&&!x) result= false;
		else result= true;break;
	case 'E':w=check(ss);x=check(ss);result=(w==x);break;
	}
	return result;
}
int main()
{
	string ss;
	while(cin>>ss)
	{
		if(ss[0]=='0') return 0;
		bool can=true;
		for(int count=0;count<=32;count++)
		{
			now=-1;
			p=bool(count/16);
			q=bool(count/8%2);
			r=bool(count/4%2);
			s=bool(count/2%2);
			t=bool(count%2);
			if(!check(ss))  {can=false;break;}
		}
		if(can) cout<<"tautology"<<endl;
		else cout<<"not"<<endl;
		ss.erase();
	}
	return 0;
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?