#include <iostream>
#include <cmath>
using namespace std;
int c[5];
void f(int a)
{int i;
for(i=0;i<=5;i++)
c[i]=0;
i=0;
while(a!=0)
{
c[i]=a%2;
a/=2;
i++;
}
}
int main()
{
int i,j,k,p,l,s[101],t;
char a[102],b[10];
while(gets(a),a[0]!='0')
{
l=strlen(a);
j=0;
for(i=0;i<l;i++)
if(a[i]>97)
{int x=0;
for(k=0;k<j;k++)
if(a[i]==b[k])
{a[i]=k+'0';x=1;break;}
if(x==0) {b[j]=a[i];a[i]=j+'0';j++;}
}
int len=0;
for(i=0;i<pow(double(2),double(j));i++)
{
f(i);p=-1;
for(t=l-1;t>=0;t--)
{
if(a[t]>='0'&&a[t]<='9')
{
p++;
s[p]=c[a[t]-'0'];
}
else if(a[t]=='N') s[p]^=1;
else
{
switch(a[t])
{
case 'K':p--;s[p]*=s[p+1];break;
case 'A':p--;s[p]|=s[p+1];break; case 'C':p--;s[p]=(s[p]^1)|s[p+1];break;
case 'E':p--;if(s[p]==s[p+1]) s[p]=1;
else s[p]=0;break;
}
}
}
if(s[0]==0) {cout<<"not"<<endl;len=1;break;}
}
if(len==0) cout<<"tautology"<<endl;
}
return 0;
}
ACM——POJ 3295 (Tautology)
最新推荐文章于 2023-04-02 17:01:54 发布