描述

啦啦啦。作为一个苦逼的程序猿。?。请看下图。。。

现在老总想让你帮他儿子写个简单计算器(他儿子小学3年级,嘘!),写不出来就扣奖金。。快帮他写吧。。。

给一个包含+-*/()的正确的表达式。要你计算它的结果。
除法的规则类似C/C++中取整除法。比如:9/5=1 10/5=2
其他规则参照现实。。。

输入

多组测试样例

一行字符串(长度小于200)

所有参与运算的数字都为小于1000正整数。

表达式中存在空格。

数据保证合法。

输出

一行
表达式的结果

样例输入

1+2
3+(5-6/(1+2)+10)*8

样例输出

3
107

提示

←_←

话说我的样例很良心啊。

思路:很久以前西南民大比赛做过的题,其实就是给你一个表达式让你求值,我们可以先将它变成波兰式,然后波兰式求值就简单多了

 #include <cstdio>
#include <iostream>
#include <algorithm>
#include <string.h>
#include <stack>
#define maxn 100009
using namespace std;
stack<char>q;
stack<long long>p;
long long priorit[],ans[maxn],h;
bool opp[maxn];
char ch[maxn];
int main()
{
priorit[(int)'+']=priorit[(int)'-']=;
priorit[(int)'*']=priorit[(int)'/']=;
priorit[(int)'(']=;
while(gets(ch+)!=NULL)
{
while(!q.empty())q.pop();
while(!p.empty())p.pop();
h=;
memset(ans,,sizeof(ans));
memset(opp,,sizeof(opp));
long long len=strlen(ch+),idx=,j=;
for(int i=;i<=len;i++)
{
if(ch[i]!=' ')ch[j++]=ch[i];
}
len=j-;
while(idx<=len)
{
long long num=,flag=;
while(ch[idx]>=''&&ch[idx]<=''&&idx<=len)
{
num=num*+ch[idx++]-'';
flag=;
}
if(flag==)
{
if(ch[idx]=='(')q.push('(');
else if(ch[idx]==')')
{
while(!q.empty()&&q.top()!='(')
{
ans[++h]=-(long long)q.top();
opp[h]=;
q.pop();
}
q.pop();
}
else
{
while(!q.empty()&&priorit[(long long)q.top()]>=priorit[(int)ch[idx]])
{
ans[++h]=-(int)q.top();
opp[h]=;
q.pop();
}
q.push(ch[idx]);
}
}
else
{
ans[++h]=num;
}
if(flag==)idx++;
}
while(!q.empty())
{
ans[++h]=-(long long)q.top();
opp[h]=;
q.pop();
}
for(int i=;i<=h;i++)
{
// printf("%I64d ",ans[i]);
if(opp[i]==)p.push(ans[i]);
else
{
long long u=p.top();
p.pop();
long long v=p.top();
p.pop();
if(ans[i]==-(int)'-')p.push(v-u);
if(ans[i]==-(int)'+')p.push(u+v);
if(ans[i]==-(int)'*')p.push(u*v);
if(ans[i]==-(int)'/')p.push(v/u);
}
}
if(!p.empty())printf("%I64d\n",p.top());
else printf("0\n");
}
}

西南民大oj 1762 我的式子不可能那么难写 【波兰式】的更多相关文章

  1. 西南民大oj(两园交求面积)

    西南民大oj:http://www.swunacm.com/acmhome/welcome.do?method=index 我的几何不可能那么可爱 时间限制(普通/Java) : 1000 MS/ 3 ...

  2. 西南民大oj(递推)

    我的数学不可能那么难推 时间限制(普通/Java) : 3000 MS/ 9000 MS          运行内存限制 : 65536 KByte总提交 : 49            测试通过 : ...

  3. 西南民大oj(矩阵快速幂)

    我的名字不可能那么难记 时间限制(普通/Java) : 1000 MS/ 3000 MS          运行内存限制 : 65536 KByte总提交 : 16            测试通过 : ...

  4. 民大OJ 1668 追杀系列第二发

    追杀系列第二发 时间限制(普通/Java) : 1000 MS/ 3000 MS          运行内存限制 : 65536 KByte 总提交 : 57            测试通过 : 16 ...

  5. 各大Oj平台介绍 刷题平台

    https://leetcode.com/ http://www.cnblogs.com/lzmfywz/archive/2012/02/07/2342010.html 1.题库与网站资源题库-在线提 ...

  6. 各大Oj平台介绍

    1.题库与网站资源题库-在线提交系统(Online Judge)简介   下面是几个比较大的在线提交系统(OnlineJudge)里面有大量历年的竞赛题目,注册一个ID,然后用自己熟悉的语言(一般有P ...

  7. 蓝桥杯练习-各大OJ平台介绍

    校赛准备的不够充分,简单题失分太遗憾, 有幸参加到省赛,这次先码一下练习平台,等学期结束忙完之后好好练习! 1.题库与网站资源题库-在线提交系统(Online Judge)简介   下面是几个比较大的 ...

  8. 国外、国内各大OJ

    下面是几个比较大的在线提交系统(Online Judge)里面有大量历年的竞赛题目,注册一个ID,然后用自己熟悉的语言(一般有Pascal/C/C++/Java)写好源代码提交即可,会实时返 回信息告 ...

  9. 各大Oj平台介绍[转]

    1.题库与网站资源题库-在线提交系统(Online Judge)简介   下面是几个比较大的在线提交系统(OnlineJudge)里面有大量历年的竞赛题目,注册一个ID,然后用自己熟悉的语言(一般有P ...

随机推荐

  1. Android学习总结(十)———— Intent的使用

    一.Intent的基本概念 我们已经学习完了Android的四大组件了,在四大组件中我们用得最多的是Intent-Filter.Intent含义就是你想利用它调用哪个组件实现相关的功能,比如调用相机组 ...

  2. Java的jdbc调用SQL Server存储过程Bug201906131120

    如果要查询结果,第一行使用set nocount on;可能可以解决问题.

  3. a标签目标链接问题

    1.先确定开始文件和目标文件,例如从css.html开始到body.html 2.确定文件寻找路径,因为css.html的父目录是css,而body.html在body目录下,所以需要先退到上一目录h ...

  4. HTTP协议详解-基础知识

    HTTP是一个属于应用层的面向对象的协议,由于其简捷.快速的方式,适用于分布式超媒体信息系统.绝大多数的Web开发,都是构建在HTTP协议之上的Web应用. HTTP协议的主要特点可概括如下: 简单: ...

  5. html制作简单框架网页 实现自己的音乐驿站 操作步骤及源文件下载 (播放功能限mp3文件)

    使用HTML语言来设计制作 Hyper Text Markup Language 超文本标记语言 这门语言的特点就是标记,就是把所有的命令单词用<>标记起来,就可以发挥作用 还有一个特点, ...

  6. ios多线程之GCD

    介绍: Grand Central Dispatch 简称(GCD)是苹果公司开发的技术,以优化的应用程序支持多核心处理器和其他的对称多处理系统的系统.这建立在任务并行执行的线程池模式的基础上的.它首 ...

  7. Promise中的next 另一个用法

    const chainAsync = fns => { let curr = 0 ; const next = (...args) => fns[curr++](next,...args) ...

  8. 【NOIP2017提高A组冲刺11.6】拆网线

    和syq大兄弟吐槽题目不小心yy出了正解.. 最优的选法就是选两个两个相互独立的,欸这不就是最大匹配吗?那多的企鹅就新加一条边呗?不够的就除以2上取整呗? 欸?AC了? 树也是一个二分图,最大匹配=最 ...

  9. 三:MySql数据库及连接

    前言: 开发中团队使用一个MYSQL数据库,我们只需要知道怎么去连接这个已经存在的数据库即可,因此关于MYSQL数据库安装部分可以去Baidu,并不是主要关心的部分 学会在windows7下使用DOS ...

  10. MacBook Pro休眠掉电、耗电量大问题解决方案

    1.前言 最近我的2015mbpMacBook Pro (Retina, 13-inch, early 2015)更新完10.14系统后,发现休眠待机一晚上后能掉5%电,白天待机4-5小时又掉了8%. ...