A tautology is a WFF that has value 1 (true) regardless of the values of its variables. For example, ApNp is a tautology because it is true regardless of the value of p. On the other hand, ApNq is not, because it has the value 0 for p=0, q=1.
You must determine whether or not a WFF is a tautology.
Input
Input consists of several test cases. Each test case is a single line containing a WFF with no more than 100 symbols. A line containing 0 follows the last case.
Output
For each test case, output a line containing tautology or not as appropriate.
Sample Input
ApNp
ApNq
0
Sample Output
tautology
not
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <math.h>
#include <algorithm>
#include <iostream>
using namespace std;
int p,q,r,s,t;
bool sta[200];
char str[200];
int top;
void fun(char c)
{
switch(c)
{
case 'K':
{
int x=sta[--top];
int y=sta[--top];
sta[top++]=(x&&y);
break;
}
case 'A':
{
int x=sta[--top];
int y=sta[--top];
sta[top++]=(x||y);
break;
}
case 'N':
{
int x=sta[--top];
sta[top++]=!x;
break;
}
case 'C':
{
int x=sta[--top];
int y=sta[--top];
sta[top++]=((!x)||y);
break;
}
case 'E':
{
int x=sta[--top];
int y=sta[--top];
sta[top++]=(x==y);
break;
}
}
}
void fun2(int i)
{
switch(str[i])
{
case 'p':
{
if(p)
sta[top++]=true;
else
sta[top++]=false;
break;
}
case 'q':
{
if(q)
sta[top++]=true;
else
sta[top++]=false;
break;
}
case 'r':
{
if(r)
sta[top++]=true;
else
sta[top++]=false;
break;
}
case 's':
{
if(s)
sta[top++]=true;
else
sta[top++]=false;
break;
}
case 't':
{
if(t)
sta[top++]=true;
else
sta[top++]=false;
break;
}
}
}
int main()
{
while(cin>>str)
{
if(str[0]=='0') break;
top=0;
int len=strlen(str),flag=0;
for(p=0;p<=1;p++)
{
for(q=0;q<=1;q++)
{
for(r=0;r<=1;r++)
{
for(s=0;s<=1;s++)
{
for(t=0;t<=1;t++)
{
for(int i=len-1;i>=0;i--)
{
if(str[i]=='p'||str[i]=='q'||str[i]=='r'||str[i]=='s'||str[i]=='t')
{
fun2(i);
}
else
fun(str[i]);
}
if(!sta[--top])
{
flag=1;
break;
}
}
if(flag) break;
}
if(flag) break;
}
if(flag) break;
}
if(flag) break;
}
if(!flag)
printf("tautology\n");
else
printf("not\n");
}
}
文章浏览阅读1.5w次,点赞46次,收藏59次。#include <stdio.h>#include <malloc.h>int main(){ char *str= (char *)malloc(20*sizeof(char)); scanf_s("%s", str); printf("%s\n",str);} 在使用VS2017时,应编译器要求需使用更加安全的..._vs2017写入位置时发生访问冲突
文章浏览阅读118次。#include<stdlib.h>#include<stdio.h>#include<time.h>#define ROW 4#define LINE 4//这个数组为 全局数组--全局数组可以被该文件内任意函数调用//调用的前提--出现在任何函数之前int array_2048[ROW][LINE] = { 0 };//现在设定一个函数,功能是设置某个位置的随机值void position()//随机产生4或2{ int i..._2048游戏的实现用c语言studying one
文章浏览阅读479次,点赞6次,收藏8次。1.1 研究背景近些年,随着中国经济发展,人民的生活质量逐渐提高,对网络的依赖性越来越高,通过网络处理的事务越来越多。随着宿舍管理的常态化,如果依然采用传统的管理方式,将会为工作人员带来庞大的工作量,这将是一个巨大考验,需要投入大量人力开展对宿舍管理等相关工作进行管理,单一且反复的操作容易出错且不易被察觉,工作人员对此风险并不能完全归避。利用现代信息技术,设计开发一款宿舍管理系统,能够极大的节省人力物力、提高工作效率、降低工作成本。1.2研究目的及意义。
文章浏览阅读94次。孤岛营救问题Time Limit:1 SecMemory Limit:128 MBDescription1944年,特种兵麦克接到国防部的命令。要求马上赶赴太平洋上的一个孤岛,营救被敌军俘虏的大兵瑞恩。瑞恩被关押在一个迷宫里,迷宫地形复杂,但幸好麦克得到了迷宫的地形图。迷宫的外形是一个长方形,其南北方向被划分为 N行,东西方向被划分为 M列,于是整个迷宫被划分为 N×M...
文章浏览阅读685次。DataFrame:读取和执行查询都会返回DataFrame,是一个由ROW 对象组成的RDD,附带包括每列数据类型的结构信息。ROW对象是支队基本数据类型的数组的封装。 ROW对象:表示DataFrame中的记录。本质是一个定长的字段数组。Spark将RDD转换成DataFrame的两种方式一、通过反射指定结构类型 通过反射的方式来推断RDD元素中的元数据。因为RDD本身一条数据本身是没有元数_spark java rdd转dataframe
文章浏览阅读3.7k次。荀子在《劝学篇》中讲到,”君子性非异也,善假于物也“。在生活中,善用各种工具能够极大的提高我们的效率,在科研工作中亦是如此。今天给大家介绍在科学研究和论文写作自己常用到的“七种武器”,有了它们,高质量的论文的写作将不再是一个难题。1、google scholar做文献调研是一件相当痛苦的事情,因为既要做到“准”,同时又要做到“全”。在常用的文献数据库中逐个去进行检索显然是一件费力不讨好的事..._一般如何学习科研软件
文章浏览阅读1.9k次。这几天在使用bootstrap框架的插件时突然忘记了jQuery文件时怎么导入的,接下来就详细讲解以下导入过程。_如何导入bootstrap的css和js文件、jquery文件
文章浏览阅读4.2k次,点赞2次,收藏26次。参考文章:http://blog.ncmem.com/wordpress/2023/09/27/java%e5%ae%9e%e7%8e%b0%e6%96%87%e4%bb%b6%e4%b8%8a%e4%bc%a0%e5%92%8c%e4%b8%8b%e8%bd%bd%e7%9a%84%e6%96%b9%e6%b3%95%e8%af%a6%e8%a7%a3/编写文件上传的方法, 通过MultipartFile类型的参数即可接收上传的文件, 方法形参的名称需要与页面的file域的name属性一致。_用java实现文件的上传下载
文章浏览阅读95次。以下是我看MySQL官方文档的时候整理的笔记,仅作参考保留。RANGE,LIST分区管理1:为未分区表创建分区ALTER TABLE trb3 PARTITION BY KEY(id) PARTITIONS 2;2:删除某个分区的数据ALTER TABLE tr DROP PARTITION p2;3:为分区表添加一个分区ALTE..._mysql分区权限
文章浏览阅读3.7k次,点赞13次,收藏66次。做大一下期期末设计时遇到一个问题,游戏运行时循环播放背景音乐这个情况下,如果音乐播放完毕,加入判断函数判断是否结束,如果结束则重新播放,但是在游戏中,音乐播放完毕到音乐重新开始播放中间会有一个间隙,这个间隙游戏也会卡顿,主函数代码如下:int main(){ //初始化背景音乐 MUSIC bgm; bgm.OpenFile("res/music/bgm.mp3"); //设置屏幕刷新率 int nfps = 120; //初始化全局数据及图形 initgr(); //初始化启动页 _winform多线程音乐
文章浏览阅读2.5k次。场景若依前后端分离版手把手教你本地搭建环境并运行项目:若依前后端分离版手把手教你本地搭建环境并运行项目_BADAO_LIUMANG_QIZHI的博客-程序员宅基地上面在搭建起来前后端分离版的项目后,别的系统要实现通过跳链接的方式直接跳转到使用若依搭建的系统中从而不用登录就能访问系统。注:博客:BADAO_LIUMANG_QIZHI的博客_霸道流氓气质_程序员宅基地关注公众号霸道的程序猿获取编程相关电子书、教程推送与免费下载。实现1、效果2、若依前后端分离版与_第三方通过地址跳转若依微服务版前端跳过登录页
文章浏览阅读3.3k次。import matplotlib as mplimport matplotlib.pyplot as pltx=["a","b","c","d","e","f"]y=[2,3,6,7,9,5,]y1=[5,8,9,3,4,6,]plt.xlim(0,20)plt.barh(x,y,align="center",color="r",label="y")plt.barh(x,y1,left..._matlibplot 堆积条形图