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

2024-05-29 1048阅读

题2:表达式求值

【题目描述】

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

【NOIP2013普及组复赛】题2:表达式求值
(图片来源网络,侵删)

【输入文件】

输入仅有一行,为需要你计算的表达式,表达式中只包含数字、加法运算符 “ + ” “+” “+”和乘法运算符 “ ∗ ” “∗” “∗”,且没有括号,所有参与运算的数字均为 0 0 0 到 231 − 1 231−1 231−1 之间的整数。输入数据保证这一行只有 0 ∼ 9 、 + 、 ∗ 0∼9、+、∗ 0∼9、+、∗这 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 
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 
VPS购买请点击我

免责声明:我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理! 图片声明:本站部分配图来自人工智能系统AI生成,觅知网授权图片,PxHere摄影无版权图库和百度,360,搜狗等多加搜索引擎自动关键词搜索配图,如有侵权的图片,请第一时间联系我们,邮箱:ciyunidc@ciyunshuju.com。本站只作为美观性配图使用,无任何非法侵犯第三方意图,一切解释权归图片著作权方,本站不承担任何责任。如有恶意碰瓷者,必当奉陪到底严惩不贷!

目录[+]