Codeforce Gym 100015I Identity Checker 暴力
Identity Checker
题目连接:
http://codeforces.com/gym/100015/attachments
Description
You likely have seen that x(sin x +cos2 x) ! x = 0, and you may have seen that sin(2x) ! 2 sin x cos x =0.
But did you know that tan (2x)(x ! x tan2 x) ! 2x tan x = 0? Would you believe that sin (2x) ! 2cos x =0?
That last one is false, but don’t just take our word for it; you should write a program that determines
whether an algebraic expression simplifies to zero (whenever it is defined).
Input
The input consists of multiple test cases, each on one line. Each test case starts with an integer N,the
number of tokens that describes a formula. The next N tokens describe a formula in reverse polish notation.
The notation works as follows. There is a stack that begins empty, and the following commands manipulate
the contents of the stack:
• “x” pushes the variable x to the stack.
• “sin”, “cos”, and “tan” replace the top element of the stack with its sin, cos, and tan, respectively.
• “+”, “-”, and “*” replace the top two elements of the stack (a on top, followed by b) with their sum
(b + a), di!erence (b ! a), and product (b " a), respectively.
You may assume that the input is valid, and results in a single item on the stack, which is the desired
expression. The length of a line will be at most 300 characters. Function arguments can contain functions,
so xsinsin is valid, but the recursion will not go any deeper than this. The input terminates with a line
with N = 0. For example:
Output
For each test case, print out a single line that contains “Identity” if the expression is always zero, and
“Not an identity” otherwise (quotes added for clarity). For example, the correct output for the sample
input above would be:
Sample Input
15 x sin x sin * x cos x cos * + x * x -
16 x sin x cos * x sin x cos * + x x + sin -
24 x x + tan x x tan x tan * x * - * x tan x * - x tan x * -
10 x x + sin x cos - x cos -
0
Sample Output
Identity
Identity
Identity
Not an identity
Hint
题意
给你一个后缀表达式子,只含有sin,cos,tan,+,-,*,x
然后问你这个式子答案是否恒等于0
题解:
直接扔随便几个数去跑,如果全部跑出来0
那就是恒等于0了咯~
注意,这道题精度好像很蛋疼。。。
代码
#include<bits/stdc++.h>
using namespace std;
string s[1000];
double check(int n,double x)
{
stack<double> t;
for(int i=0;i<n;i++)
{
if(s[i]=="x")
t.push(x);
if(s[i]=="sin")
{
double tmp = t.top();
t.pop();
t.push(sin(tmp));
}
if(s[i]=="cos")
{
double tmp = t.top();
t.pop();
t.push(cos(tmp));
}
if(s[i]=="tan")
{
double tmp = t.top();
t.pop();
t.push(tan(tmp));
}
if(s[i]=="+")
{
double tmp1 = t.top();
t.pop();
double tmp2 = t.top();
t.pop();
t.push(tmp2+tmp1);
}
if(s[i]=="-")
{
double tmp1 = t.top();
t.pop();
double tmp2 = t.top();
t.pop();
t.push(tmp2-tmp1);
}
if(s[i]=="*")
{
double tmp1 = t.top();
t.pop();
double tmp2 = t.top();
t.pop();
t.push(tmp2*tmp1);
}
}
//cout<<t.top()<<endl;
return t.top();
}
vector<double> ans;
int main()
{
//freopen("1.in","r",stdin);
int n;
while(cin>>n)
{
if(n==0)
break;
for(int i=0;i<n;i++)
cin>>s[i];
ans.clear();
ans.push_back(check(n,213));
ans.push_back(check(n,1.0));
ans.push_back(check(n,123));
ans.push_back(check(n,90));
ans.push_back(check(n,9871));
ans.push_back(check(n,3.1234));
ans.push_back(check(n,-1231.5));
ans.push_back(check(n,0));
int flag = 0;
for(int i=0;i<ans.size();i++)
{
if(fabs(ans[i])>1e-9)
{
cout<<"Not an identity"<<endl;
flag = 1;
break;
}
}
if(flag==0)
cout<<"Identity"<<endl;
}
}
Codeforce Gym 100015I Identity Checker 暴力的更多相关文章
- Codeforces Gym 100015H Hidden Code 暴力
Hidden Code 题目连接: http://codeforces.com/gym/100015/attachments Description It's time to put your hac ...
- Codeforces gym 100685 A. Ariel 暴力
A. ArielTime Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/gym/100685/problem/A Desc ...
- Codeforces Gym 100637G G. #TheDress 暴力
G. #TheDress Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/gym/100637/problem/G ...
- codeforce gym/100495/problem/K—Wolf and sheep 两圆求相交面积 与 gym/100495/problem/E—Simple sequence思路简述
之前几乎没写过什么这种几何的计算题.在众多大佬的博客下终于记起来了当时的公式.嘚赶快补计算几何和概率论的坑了... 这题的要求,在对两圆相交的板子略做修改后,很容易实现.这里直接给出代码.重点的部分有 ...
- Gym 101055A 计算几何,暴力
http://codeforces.com/gym/101055/problem/A 题目:给定一些三维空间的点,要你找一个平面,能覆盖尽量多的点,只要求输出点数即可.n<=50 因为数据量小, ...
- Codeforces Gym 100203G Good elements 暴力乱搞
原题链接:http://codeforces.com/gym/100203/attachments/download/1702/statements.pdf 题解 考虑暴力的复杂度是O(n^3),所以 ...
- Spell checker(暴力)
Spell checker Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 20188 Accepted: 7404 De ...
- Gym - 101848B Almost AP 暴力
题目链接:http://codeforces.com/gym/101848/problem/B 给出一串数字要你最多改动三个数字使这一串数字成为等差数列.因为最多改动三个数字所以可以先求出相邻两项的差 ...
- codeforce Gym 100500A Poetry Challenge(博弈,暴搜)
题解:状态压缩之后,暴力dfs,如果有一个选择,能让对手必败,那么就是必胜态,能转移到的状态都是对手的必胜态,或者无法转移,就是必败态. 总算是过了,TLE是因为状态没判重. #include< ...
随机推荐
- Axis,axis2,Xfire以及cxf对比
http://ws.apache.org/axis/ http://axis.apache.org/axis2/java/core/ http://xfire.codehaus.org/ http:/ ...
- 开源堡垒机GateOne的安装、配置笔记
因为内部临时需要这么一套系统,所以搜搜查查,搞定了系统部署,使用pam认证的配置. 系统初始化是使用CentOS 6.5 Mini x64版本. 首先exports http_proxy和http ...
- 指针数组 数组指针的区别.xml
pre{ line-height:1; color:#1e1e1e; background-color:#f0f0f0; font-size:16px;}.sysFunc{color:#627cf6; ...
- seo技巧-2015/10/05
1.每页都要有它自己的文件名,并且有它自己的上级文件夹和它自己相关关键字. 2.建议在每页上使用一个的H1标签.我也试着使用许多H2 或H3的标签在页面内辅助构成正文内容. 3. 有时花费一点钱帮助你 ...
- spark connect to Cassandra problem
Cassandra rowkey is Blob type, cannot select by spark. How?
- Java正则表达式获取网页所有网址和链接文字
; pos1= urlContent.indexOf(strAreaBegin)+strAreaBegin.length(); pos2=urlContent.inde ...
- APT攻击将向云计算平台聚焦
APT攻击作为一种高效.精确的网络攻击方式,在近几年被频繁用于各种网络攻击事件之中,并迅速成为企业信息安全最大的威胁之一. 近日,飞塔中国首席技术顾问X在谈及APT攻击时表示,随着云计算的不断发展普及 ...
- 把数组A的奇数放在左边,偶数放在右边
这也是一道面试题,是不是easy到爆,但是渣渣我面试时一点算法状态都没有 这道题和上一篇博客里那道题的解法一模一样 # include <iostream> using namespace ...
- Masonry 实现输入框随键盘位置改变
Github: https://github.com/saitjr/MasonryDemo 直接上代码: #import "ViewController4.h" #import & ...
- geeksforgeeks@ Largest Number formed from an Array
http://www.practice.geeksforgeeks.org/problem-page.php?pid=380 Largest Number formed from an Array G ...