【NOIP2013普及组复赛】题2:表达式求值

题2:表达式求值

【题目描述】

给定一个只包含加法和乘法的算术表达式,请你编程计算表达式的值。

【输入文件】

输入仅有一行,为需要你计算的表达式,表达式中只包含数字、加法运算符 “ + ” “+” +和乘法运算符 “ ∗ ” “∗” ,且没有括号,所有参与运算的数字均为 0 0 0 231 − 1 231−1 2311 之间的整数。输入数据保证这一行只有 0 ∼ 9 、 + 、 ∗ 0∼9、+、∗ 09+ 12 12 12 种字符。

【输出文件】

输出只有一行,包含一个整数,表示这个表达式的值。注意:当答案长度多于 4 4 4 位时,请只输出最后 4 4 4 位,前导 0 0 0 不输出。

【输入样例1】

1+1*3+4

【输出样例1】

8

【输入样例2】

1+1234567890*1

【输出样例2】

7891

【输入样例3】

1+1000000003*1

【输出样例3】

4

【样例说明】

样例 1 1 1 计算的结果为 8 8 8,直接输出 8 8 8

样例 2 2 2 计算的结果为 1234567891 1234567891 1234567891,输出后 4 4 4 位,即 7891 7891 7891

样例 3 3 3 计算的结果为 1000000004 1000000004 1000000004,输出后 4 4 4 位,即 4 4 4

【数据范围】

对于 30 % 30\% 30%的数据, 0 ≤ 0≤ 0表达式中加法运算符和乘法运算符的总数 ≤ 100 ≤100 100

对于 80 % 80\% 80%的数据, 0 ≤ 0≤ 0表达式中加法运算符和乘法运算符的总数 ≤ 1000 ≤1000 1000

对于 100 % 100\% 100%的数据, 0 ≤ 0≤ 0表达式中加法运算符和乘法运算符的总数 ≤ 100000 ≤100000 100000

【代码如下】:

#include <bits/stdc++.h>
using namespace std;
ifstream cin("expr.in");
ofstream cout("expr.out");
long long a[100002];  // 储存数
bool b[100001];  // 储存运算符,如果为乘号,保存true,加号则保存false
int main() {string str;  // 以STL字符串的形式保存表达式(其实字符数组应该也可以)int i, t = 0, top = 0;long long sum = 0;cin >> str;int len = str.size();for (i = 0; i < len; ++i)if (str[i] == '+') {  // 提取加号a[++top] = t;t = 0;} else if (str[i] == '*') {  // 提取乘号a[++top] = t;t = 0;b[top] = true;} elset = t * 10 + str[i] - '0';  // 提取数a[++top] = t;for (i = 1; i <= top; ++i)if (b[i]) {  // 先算乘法// 这里做一个处理,乘号左边的数保存0,右边的保存a[i]*a[i+1]%10000a[i + 1] = a[i] * a[i + 1] % 10000;a[i] = 0;}for (i = 1; i <= top; ++i)// 再算加法,因为我们之前做过处理,所以全部加起来就行了sum = (sum + a[i]) % 10000;cout << sum << endl;  // sum即为答案return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/17758.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

根据标签名递归读取xml字符串中element

工具类&#xff1a; /*** 根据标签名递归读取xml字符串中element* 例&#xff1a;* String xml * "<req>\n" * "<tag1></tag1>\n" * "<tag2>\n" * " <tag4></tag4>\n" * "</tag2>\n&…

go panic和recover

panic 能够改变程序的控制流&#xff0c;调用 panic 后会立刻停止执行当前函数的剩余代码&#xff0c;并在当前 goroutine 中递归执行调用方的 defer。recover 可以中止 panic 造成的程序崩溃。它是一个只能在 defer 中发挥作用的函数&#xff0c;在其他作用域中调用不会发挥作…

如何在线转换图片的格式?一键修改图片格式的方法

图片是日常生活和工作中的一种常用的内容展示类型&#xff0c;在使用图片的时候不同用途需要使用的图片格式也是不同的&#xff0c;比如我们手中有一张jpg格式图片&#xff0c;但是平台上传要求格式是png&#xff0c;那么怎样才能将jpg转png格式呢&#xff1f;下面将教大家图片…

模拟量4~20mA电流传感器接线方式

一、模拟量4~20mA电流传感器接线方式 无源双线制是常见的电流型传感器接线方式&#xff0c;它具有简单、经济的特点。其接线方式如下&#xff1a; 传感器的“”接到数据采集器的电源“”上&#xff0c; 传感器的“-”端子连接到数据采集器的“AI”端子上&#xff0c; 数据采集器…

无人机+EasyDSS互联网视频平台:构建秸秆焚烧监控的“天眼”系统

一、方案背景 在每年的夏收时节&#xff0c;秸秆禁烧成为各地政府面临的一项重要任务。随着夏收季节的结束&#xff0c;大量农作物秸秆的处理问题逐渐凸显。一方面农作物种植面积辽阔&#xff0c;禁烧区域面积较大&#xff0c;监管巡逻人员的数量有限&#xff0c;无法全面顾及…

使用 ASM 修改字段类型,解决闪退问题

问题 我的问题是什么&#xff1f; 在桥接类 UnityBridgeActivity 中处理不同 unity 版本调用 mUnityPlayer.destroy(); 闪退问题。 闪退日志如&#xff1a; 闪退日志说在 UnityBridgeActivity中找不到类型为 UnityPlayer 的属性 mUnityPlayer。 我们知道&#xff0c;Android…

【鸟叔的Linux私房菜】2-主机规划与磁盘分区

文章目录 2.1 Linux与硬件的搭配各硬件设备在Linux的文件名使用虚拟机学习 2.2 磁盘分区磁盘连接方式和设备文件名的关系MBR(MS-DOS)与GPT磁盘分区表MBR(MS-DOS)GPT磁盘分区表 启动流程的BIOS与UEFI启动检测程序BIOS搭配MBR/GPT的启动流程UEFI BIOS搭配 GPT启动的流程 Linux安装…

RGB 平均值统计

任务&#xff1a;有一一对应的图片多组如下&#xff0c;希望统计灰色部分原有grb平均值&#xff0c;彩色部分rgb平均值。 方法&#xff1a;由下图对各个像素分析&#xff0c;分为3类&#xff0c;并记录坐标&#xff0c;根据坐标统计上图的rgb平均值&#xff0c;结果放在一张Exc…

Linux完整版命令大全(十八)

quotacheck 功能说明&#xff1a;检查磁盘的使用空间与限制。语  法&#xff1a;quotacheck [-adgRuv][文件系统...]补充说明&#xff1a;执行quotacheck指令&#xff0c;扫描挂入系统的分区&#xff0c;并在各分区的文件系统根目录下产生quota.user和quota.group文件&#…

linux开发之设备树基本语法二

设备树特殊节点,对节点定义别名,chosen节点用来uboot给内核传参 上面的mmc0就是sdmmc0节点的别名 device_type属性 只对cpu节点和memory节点进行描述 自定义属性 这部分自定义,比如定义管脚标号,初始数值等 为什么我们可以在设备树上自己定义属性呢?设备树文件描述的是硬…

JD3-40/23漏电继电器 AC220V 50-500mA 0.1s 导轨安装

系列型号&#xff1a; JD3-40/13漏电继电器JD3-40/23漏电继电器JD3-40/33漏电继电器JD3-40/43漏电继电器 JD3-70/13漏电继电器JD3-70/23漏电继电器JD3-70/33漏电继电器JD3-70/43漏电继电器 JD3-100/23漏电继电器JD3-100/43漏电继电器JD3-100/33漏电继电器JD3-100/13漏电继电…

轻松入门Linux命令行(一)

1. 打开终端 在Linux系统中&#xff0c;我们可以通过终端&#xff08;Terminal&#xff09;来执行各种命令。不同的Linux发行版可能有不同的终端程序&#xff0c;但通常都可以在应用程序菜单中找到。打开终端后&#xff0c;我们就可以看到一个命令行提示符&#xff0c;等待我们…

260 基于matlab的工业乙醇发酵GUI仿真

基于matlab的工业乙醇发酵GUI仿真。首先对经典的流加半经验半理论模型进行动态和稳态仿真&#xff0c;考虑实际情况密&#xff0c;逐步将温度&#xff0c;气体排放等因素考虑到模型中去&#xff0c;进行综合性仿真。结合GUI技术&#xff0c;以动力学模型为核心&#xff0c;制作…

国产高边驱动对标英飞凌BTS7020-2

车规级高边驱动系列产品可P2P替换BTS7020-2的高边驱动芯片。类比半导体高边驱动产品可用于驱动车身控制域中的各种阻性、感性及容性负载的驱动&#xff0c;其在车内外的应用非常广泛&#xff0c;包括车内饰灯、头尾灯、座椅和方向盘及后视镜加热、电磁阀、门锁、电机等场景。 …

svg画简单的立方体

开发背景 要开发一个拖拽的大屏项目&#xff0c;其中涉及到一个装饰组件&#xff0c;是一个立方体cube&#xff0c;要求颜色可以修改&#xff0c;大小可以拖拽改变。 效果如下 分析 经过我一番奇思妙想&#xff0c;决定用svg实现&#xff0c;因为对svg比较熟悉。那就先来在草…

python前端通过API接口调用与后端进行数据交互前端如何调用api接口获取电商平台商品实时评论信息数据

要在Python前端通过API接口调用与后端进行数据交互并获取商品实时评论信息数据&#xff0c;可以通过封装好的api接口通过链接直接请求获取商品数据&#xff0c;以下是接入api的请求示例&#xff1a; # coding:utf-8 """ Compatible for python2.x and python3.…

柯桥成人职场英语/Excuse me 是 “不好意思”,那 Excuse you呢?

口语中&#xff0c;excuse me的使用频率非常高 甚至已经成为大家的口头禅 用在一些表示歉意或者打扰对方的场合 本来excuse me的用法就已经够丰富了 没想到竟然还有excuse you&#xff1f; 哈哈哈&#xff0c;别蒙圈 这篇就给大家捋捋excuse的那些表达 快和小编一起来学学…

【博客20】缤果Matlab串口调试助手V1.0(中级篇)

超级好用的Matlab串口调试助手 开发工具: MATLAB 2024a中文版 (编程语言matlab) 目录 前言 一、软件概要&#xff1a; 二、软件界面&#xff1a; 1.App演示 ​ ​---- ◇♣♡♠ ---- 2.其他扩展App展示 ​编辑 三、获取 >> 源码以及Git记录&#xff1a; 总结 前…

海外仓系统要多少钱?最贵的未必是最好的,性价比高的才是

海外仓系统可以说已经是现在海外仓管理不可或缺的重要工具&#xff0c;然而&#xff0c;很多海外仓企业在选择海外仓系统时最头疼的问题就是不知道到底多少钱才合适。 确实&#xff0c;现在的海外仓系统市场价格体系非常多&#xff0c;几万几十万各种定价都有&#xff0c;让人…

期刊issn清洗方法

文章目录 一、前言二、实现方法一、前言 该代码用于统一期刊不规范的issn格式,并筛选出错误的issn 二、实现方法 import numpy as npclass CleanJournal():@classmethoddef isNaNo(cls, sth):