Gym100015 I Identity Checker 栈容器使用,数学
给出一个三角表达式,问是否恒为零
训练的时候队友写了,后来wa,我读了读题感觉他写的没错。。稍微改了一点就对了。。迷
结束后自己复盘,又从头写了一遍这个题,总结下:
这个题分成两部分,一部分是正确处理这个表达式,用c++ stack来做就可以写的很清晰,另一个部分就是判断
首先,就按照它对于input的解释一点点把这个表达式压到栈里面就行,表达式处理完毕之后,栈里面一定只有一个元素,且就是表达式的值
所以问题就在于验证它为恒为零了。。这个思路挺无语的其实,就是找几个有代表性的值带进去算,所有计算值在误差范围内等于零即可判定为恒零
这几个代表性的值确实不能瞎写。。我自己写的时候试了好几次才试出来能过样例的,有的情况下出的测试点多了反而会导致误判,所以感觉这个题目在这里出的不好。。没太大意思
判断时所使用的精度可以高一点,我直接设置到了-9次方了,这个感觉高点更好
下面是我训练后写的代码
code:
#include <iostream>
#include <cstdio>
#include <cstring>
#include <cstdlib>
#include <cmath>
#include <algorithm>
#include <string>
#include <map>
#include <stack>
#include <queue>
#include <vector>
#define LL long long
using namespace std;
const double pi=acos(-1);
const int Mod=1e9+7;
const double eps=1e-9;int n;
stack<double>s;
string seq[300];
bool calcu(double a,string m[])
{while(!s.empty())s.pop();for(int i=0; i<n; i++){string now=m[i];if(now=="x")s.push(a);else if(now=="sin"){double tmp=s.top();s.pop();s.push(sin(tmp));}else if(now=="cos"){double tmp=s.top();s.pop();s.push(cos(tmp));}else if(now=="tan"){double tmp=s.top();s.pop();s.push(tan(tmp));}else if(now=="+"){double tmp1=s.top();s.pop();double tmp2=s.top();s.pop();s.push(tmp1+tmp2);}else if(now=="-"){double tmp1=s.top();s.pop();double tmp2=s.top();s.pop();s.push(tmp2-tmp1);}else{double tmp1=s.top();s.pop();double tmp2=s.top();s.pop();s.push(tmp1*tmp2);}}double ans=s.top();if(fabs(ans)<=eps)return true;return false;
}
int main()
{//freopen("out.txt","w",stdout);while(cin>>n){if(n==0)break;for(int i=0; i<n; i++){cin>>seq[i];}bool flag=true;if(!calcu(0,seq)||!calcu(3.1415,seq)||!calcu(1.0,seq)||!calcu(-1234.5,seq)||!calcu(120,seq)||!calcu(-123.4,seq)||!calcu(9876,seq)||!calcu(80,seq)||!calcu(acos(-1)/3.0,seq)||!calcu(-acos(-1)/3.0,seq)||!calcu(acos(-1),seq)){flag=false;}if(flag)cout<<"Identity"<<endl;else cout<<"Not an identity"<<endl;}
}
Gym100015 I Identity Checker 栈容器使用,数学相关推荐
- abap判断包含字符当中包含小数点_剑指Offer整理3 -- 栈和队列 + 数学和字符串
专题3 栈和队列 + 数学和字符串 专题3-1 栈和队列 1. 栈的压入弹出序列 题目描述 输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否可能为该栈的弹出顺序.假设压入栈的所有数字 ...
- 数据结构-栈容器的实现
2021/11/23 更新 将用于生成栈节点的StackNode类改为Stack类的内嵌类,不仅使组织结构更合理,还减少了函数调用,有效减少了代码量. 栈的实现 栈是一种重要的数据结构,是一种线性结构 ...
- C++小课堂:STL中的栈容器(stack)
栈很像我们的箱子,我们将衣服这些装进箱子,第一个拿出来的肯定是最顶上的那件衣服,栈也一样. 今天我们就来学习栈容器:stack 头文件:<stack> 之前介绍的vector其实是STL中 ...
- C++STL之stack栈容器
C++STL之stack栈容器 1. 再谈栈 回顾一下之前所学的栈,栈是一种先进后出的数据结构,而实现方式需要创建多个结构体,通过链式的方式进行实现,这是标准的栈的思路,而在STL中栈可以以更为简单的 ...
- C++ STL之stack栈容器
一.STL: 1)标准模版库,提供了通用的模版库和函数.如:向量.链表.队列.栈. 2)核心组建包括:容器(Containers).算法(Algorithms).迭代器(Iterators). 二.S ...
- java中定义一个栈容器_Java 容器之 Connection栈队列及一些常用
集合家族图 ---|Collection: 单列集合 ---|List: 有存储顺序 , 可重复 ---|ArrayList: 数组实现 , 查找快 , 增删慢 ---|LinkedList: 链表实 ...
- c++ stl栈容器stack用法介绍
stack堆栈容器 堆栈是一个线性表,插入和删除只在表的一端进行.这一端称为栈顶(Stack Top),另一端则为栈底(Stack Bottom).堆栈的元素插入称为入栈,元素的删除称为出栈.由于元素 ...
- cqueue结构pop_c++ stl栈容器stack的pop(),push()等用法介绍及头文件
C++ Stack(堆栈) 是一个容器类的改编,为程序员提供了堆栈的全部功能,--也就是说实现了一个先进后出(FILO)的数据结构. c++ stl栈stack的头文件为: #include c++ ...
- P6046-纯粹容器【数学期望,组合数】
正题 题目链接:https://www.luogu.com.cn/problem/P6046 题目大意 nnn个数,每次选择两个相邻的数删除小的那个,求每个数期望存活轮数. 解题思路 相当于一条链每次 ...
- OpenStack——开放栈(源自NASA的开源云管理软件)
概述 是什么? 开放栈(OpenStack)是一个免费的开放标准的云计算平台,用于构建基础设施即服务(IaaS)业务. 谁在用? 开放栈同时被公有云和私有云大量部署使用,几乎是目前最流行的云平台构建软 ...
最新文章
- ERP与EWM集成配置---ERP 端(一)
- 牛客网——求平均年龄(水题)
- 安天移动安全:Janus高危漏洞深度分析
- excel合并计算_【Excel】合并计算和模拟分析的应用
- python po设计模式_(Python)PO设计模式
- UmiJS CDN 部署之 publicPath
- 基于linux的netfilter处理数据包的过程分析,基于Netfilter的网络数据包分析
- 大数据学习笔记08:Java程序访问HDFS
- 雷电3和Type C区别
- MySQL引擎innodb和mysum_mysql数据库引擎 MyISAM和 InnoDB区别
- c++用一级运算比较大小_python学习五-python运算符
- python与c语言数据交互,python与c语言交互---学习012
- 四子棋 java_JAVA写的四子棋
- 图对比学习的应用(NCL,SimGRACE,ClusterSCL)
- JAVA中用POI操作word
- 福玛特机器人评测_离子净化!福玛特E-R350W扫地机器人试玩
- 小米手机便签怎么看写了多少字 小米手机便签统计字数方法
- MySQL优化之超大分页查询
- 《转》理解HTTP消息头
- 在数据表中添加一个字段的SQL语句怎么写
热门文章
- 智鼎在线测评是测什么_(详解)人才测评工具和人才测评方法
- 突破HR的职业发展瓶颈:放弃“优秀”!
- 网络服务器配置管理综合实训项目心得体会,服务器的配置与管理实训报告.doc...
- Unity-Chan Toon Shader 2 介绍
- 目标跟踪(4)使用dlib进行对象跟踪
- ae镜头光晕插件Optical Flares
- 专科三年的教训,写给自己,也给正在学习路上的你
- mysql 语法大全
- httprunner 3.x学习10 - parameters 参数化
- 【3D建模制作技巧分享】Maya如何给模型上色与渲染