当前位置: 首页 > news >正文

【洛谷】P1449 后缀表达式

题目描述

所谓后缀表达式是指这样的一个表达式:式中不再引用括号,运算符号放在两个运算对象之后,所有计算按运算符号出现的顺序,严格地由左而右新进行(不用考虑运算符的优先级)。

本题中运算符仅包含 +-*/ \texttt{+-*/} +-*/。保证对于 / \texttt{/} / 运算除数不为 0。特别地,其中 / \texttt{/} / 运算的结果需要向 0 取整(即与 C++ / 运算的规则一致)。

如: 3*(5-2)+7 \texttt{3*(5-2)+7} 3*(5-2)+7 对应的后缀表达式为: 3.5.2.-*7.+@ \texttt{3.5.2.-*7.+@} 3.5.2.-*7.+@。在该式中,@ 为表达式的结束符号。. 为操作数的结束符号。

输入格式

输入一行一个字符串 s s s,表示后缀表达式。

输出格式

输出一个整数,表示表达式的值。

样例 #1

样例输入 #1

3.5.2.-*7.+@

样例输出 #1

16

样例 #2

样例输入 #2

10.28.30./*7.-@

样例输出 #2

-7

提示

数据保证, 1 ≤ ∣ s ∣ ≤ 50 1 \leq |s| \leq 50 1s50,答案和计算过程中的每一个值的绝对值不超过 1 0 9 10^9 109

#include<bits/stdc++.h>
int stack[101];
char s[256];
int comp(char s[256]){int i=0,top=0,x;while(i<=strlen(s)-2){switch(s[i]){case '+':stack[--top]+=stack[top+1];break;case '-':stack[--top]-=stack[top+1];break;case '*':stack[--top]*=stack[top+1];break;case '/':stack[--top]/=stack[top+1];break;default:x=0;while(s[i]!='.') x=x*10+s[i++]-'0';stack[++top]=x;break;}i++;}return stack[top];
} 
main(){gets(s);printf("%d",comp(s));return 0;
}

http://www.lryc.cn/news/332453.html

相关文章:

  • 【MySQL】聚合函数和分组聚合
  • RDD算子(四)、血缘关系、持久化
  • 51之定时器与中断系统
  • C语言中的内存函数
  • JS继承与原型、原型链
  • C#基础知识总结
  • 机器学习模型——决策树
  • 【HTML】制作一个简单的三角形动态图形
  • Acwing.504 转圈游戏(带取余的快速幂)
  • pair作为unordered_map的key报错
  • Windows提权—数据库提权-mysql提权mssql提权Oracle数据库提权
  • 为什么android创建Fragment推荐用newInstance
  • MyBatis的xml实现方式
  • 大模型prompt技巧——思维链(Chain-of-Thought)
  • 内网穿透的应用-如何在Android Termux上部署MySQL数据库并实现无公网IP远程访问
  • 面试算法-133-区间子数组个数
  • 物联网实战--入门篇之(八)嵌入式-空气净化器
  • macOS上QT打开麦克风和摄像头的权限问题
  • 鸿蒙手机cordova-plugin-camera不能拍照和图片不显示问题
  • Spring源码解析上
  • 第九题:最大间隙
  • 【随笔】Git -- 高级命令(中篇)(七)
  • 可视化大屏 - 项目1
  • Collection与数据结构 链表与LinkedList(三):链表精选OJ例题(下)
  • 如何通过C++身份证实名认证接口实现实名认证功能
  • 用html写一个爱心
  • 如何看到 synchronized 背后的“monitor 锁”?
  • 如何建立一个网页模版
  • P8783 [蓝桥杯 2022 省 B] 统计子矩阵
  • 【C++】list介绍