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 暴力的更多相关文章

  1. Codeforces Gym 100015H Hidden Code 暴力

    Hidden Code 题目连接: http://codeforces.com/gym/100015/attachments Description It's time to put your hac ...

  2. Codeforces gym 100685 A. Ariel 暴力

    A. ArielTime Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/gym/100685/problem/A Desc ...

  3. Codeforces Gym 100637G G. #TheDress 暴力

    G. #TheDress Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/gym/100637/problem/G ...

  4. codeforce gym/100495/problem/K—Wolf and sheep 两圆求相交面积 与 gym/100495/problem/E—Simple sequence思路简述

    之前几乎没写过什么这种几何的计算题.在众多大佬的博客下终于记起来了当时的公式.嘚赶快补计算几何和概率论的坑了... 这题的要求,在对两圆相交的板子略做修改后,很容易实现.这里直接给出代码.重点的部分有 ...

  5. Gym 101055A 计算几何,暴力

    http://codeforces.com/gym/101055/problem/A 题目:给定一些三维空间的点,要你找一个平面,能覆盖尽量多的点,只要求输出点数即可.n<=50 因为数据量小, ...

  6. Codeforces Gym 100203G Good elements 暴力乱搞

    原题链接:http://codeforces.com/gym/100203/attachments/download/1702/statements.pdf 题解 考虑暴力的复杂度是O(n^3),所以 ...

  7. Spell checker(暴力)

    Spell checker Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 20188   Accepted: 7404 De ...

  8. Gym - 101848B Almost AP 暴力

    题目链接:http://codeforces.com/gym/101848/problem/B 给出一串数字要你最多改动三个数字使这一串数字成为等差数列.因为最多改动三个数字所以可以先求出相邻两项的差 ...

  9. codeforce Gym 100500A Poetry Challenge(博弈,暴搜)

    题解:状态压缩之后,暴力dfs,如果有一个选择,能让对手必败,那么就是必胜态,能转移到的状态都是对手的必胜态,或者无法转移,就是必败态. 总算是过了,TLE是因为状态没判重. #include< ...

随机推荐

  1. 类库从自带的配置文件中获取信息(DLL文件 获取 DLL文件自带的配置信息) z

    http://blog.csdn.net/shuaishifu/article/details/19602059 类库调用自身所带的配置文件中的配置信息,而不是读取应用程序所带的配置信息.代码如下: ...

  2. 开源Math.NET基础数学类库使用(11)C#计算相关系数

    阅读目录 前言 1.Math.NET计算相关系数的类 2.Correlation的实现 3.使用案例 4.资源                本博客所有文章分类的总目录:[总目录]本博客博文总目录-实 ...

  3. LINQ to SQL使用教程

    前些时间用LINQ to SQL做了一些项目,现在打算总结一下,帮助新手快速入门,并写一些别的教程没提到的东西. 一.LINQ to SQL和别的LINQ to XXX有什么关系?二.延迟执行(Def ...

  4. Groovy读取properties及txt

    昨晚帮老同事解决了一个SoapUI的代码问题,好长时间没用SoapUI,好多东西都忘了,今天先总结下Groovy读取properties 首先吐槽下SoapUI的apidocs,我几乎从中看不出什么东 ...

  5. 组建自动化工具Ant

    组建自动化工具Ant Ant可以帮助我们自动化的完成项目的构建 下面是维基百科对Ant的介绍:http://zh.wikipedia.org/wiki/Apache_Ant Apache Ant,是一 ...

  6. 微软Azure云主机测试报告

    http://www.cnblogs.com/sennly/p/4135658.html 1. 测试目的 本次测试的目的在于对微软云主机做性能测试,评估其是否能够满足我们业务的需求. 2. 测试项目 ...

  7. UNITY3D MAC版本破解

    百度网盘下载地址: http://pan.baidu.com/s/1eQmvLqa#path=%252F 包含本体和破解文件 首先说明一下,如果是公司做开发建议去购买正版. 之前网上也有很多人贴出了破 ...

  8. cocos2dx使用了第三方库照样移植android平台-解决iconv库的移植问题

    当我写这篇文章的时候我是怀着激动的心情的,因为我又解决了一个技术问题.你可能对题目还一知半解,这是什么意思,我之所以要写这篇文章就是要解决当我们在cocos2dx中使用了第三方库的时候,移植到andr ...

  9. JXSE and Equinox Tutorial, Part 1

    http://java.dzone.com/articles/jxse-and-equinox-tutorial-part —————————————————————————————————————— ...

  10. HDU 4610 Cards (合数分解,枚举)

    Cards Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submi ...