首页 > 其他分享 >[NOIP2013 普及组] 表达式求值

[NOIP2013 普及组] 表达式求值

时间:2023-05-11 20:22:11浏览次数:48  
标签:输出 NOIP2013 样例 运算符 加法 求值 表达式 乘法

[NOIP2013 普及组] 表达式求值

题目描述

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

输入格式

一行,为需要你计算的表达式,表达式中只包含数字、加法运算符 “\(+\)” 和乘法运算符 “$ \times $”,且没有括号,所有参与运算的数字均为 \(0\) 到 \(2^{31}-1\) 之间的整数。

输入数据保证这一行只有 $ 0-9\(、\)+\(、\) \times $ 这 $12 $种字符。

输出格式

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

注意:当答案长度多于 \(4\) 位时,请只输出最后 $ 4$ 位,前导 $ 0$ 不输出。

样例 #1

样例输入 #1

1+1*3+4

样例输出 #1

8

样例 #2

样例输入 #2

1+1234567890*1

样例输出 #2

7891

样例 #3

样例输入 #3

1+1000000003*1

样例输出 #3

4

提示

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

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

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

Code

#include <bits/stdc++.h>
using namespace std;
stack <int> x;
int main()
{
	int a,b;
	char c;
	cin >> a;
	int m=10000;
	a=a%m;
	x.push(a);
	while(cin>>c>>b)
	{
		if(c=='*')
		{
			a=x.top();
			x.pop();
			x.push(a*b%m);
		}
		else x.push(b);
	}
	a=0;
	while(x.size())
	{
		a+=x.top();
		a%=m;
		x.pop();
	}
	cout<<a<<endl;
	return 0;
}

标签:输出,NOIP2013,样例,运算符,加法,求值,表达式,乘法
From: https://www.cnblogs.com/momotrace/p/p1981.html

相关文章

  • 中/后缀表达式
    目录0x01什么是后缀表达式0x02后缀表达式的具体应用0x031JAVA的后缀表达式源码反编译BYTECODEJAVAC的实现二元表达式树节点对象运行时二元表达式树执行过程0x032C的后缀表达式源码反汇编0x03简单实现中缀转后缀表达式后缀转中缀表达式0x04总结纸上得来终觉浅,绝知此事要躬行......
  • 【C++学习笔记】C++ 正则表达式不完全支持零断宽言
    最近需要解析配置文件,遇到从@STARTDATA@END中提取DATA的正则,按照C#的操作,直接(?<=@START)[\W\w]?(?=@END),就能提取的,可是在C++中,regexe("(?<=@START)[\W\w]?(?=@END)")报错了,找了很多说法,最终结论:支持先行断言,不支持后行断言即:(?<=@START)和(?<!@START)。好在C++支持子匹......
  • linux 中 正则表达式* 和 ?
     *表示匹配前一个字符0次或者多次;?表示匹配前一个字符0次或者1次,且只在扩展正则表达式中生效。 001、root@DESKTOP-IDT9S0E:/home/test#echo"ik"|grep"ie?k"root@DESKTOP-IDT9S0E:/home/test#echo"ik"|sed-n'/ie*k/p'##*表示匹配0次或者多次ikroot@DESK......
  • 6个在线正则表达式工具
    正则表达式可以让开放人员更加有效的操纵文本内容,在各种各样的开发中经常会遇到需要正则表达式解决的问题,比如验证邮箱,验证网址,一些小偷程序的批量替换等等。熟练的应用正则表达式可以方便于很多文本的操作,加快开发的进度。但是正则表达式并不是一个非常简单......
  • 正则表达式的使用方法
    引用单元:uses System.RegularExpressions1、TRegEx.Match方法Match()方法总是获取满足条件的第一个匹配,而不关心满足条件的匹配有多少个。Match()方法都回一个Match对象,其中包含了匹配的各种细节.Match()方法的取值方法varm:TMatch;beginm:=TRegEx.Match('a......
  • 正则表达式语法及其在python的应用
    一、语法参考:https://www.liujiangblog.com/course/python/731、普通字符:正则表达式中的普通字符在进行匹配的时候只会匹配与自身相同的一个字符。2、元字符:.小数点;|逻辑或;[]匹配字符集中的一个字符;[^]对字符集求反;-定义字符集中的字符区间;\对紧跟其后的一个字符进行转义;()对表......
  • 正则表达式详解
    一、正则表达式概述正则表达式是一组由字母和符号组成的特殊文本,它可以用来从文本中找出满足你想要的格式的句子。通俗的讲就是按照某种规则去匹配符合条件的字符串一个正则表达式是一种从左到右匹配主体字符串的模式。“Regularexpression”这个词比较拗口,我们常使用缩写......
  • 现代 C++:Lambda 表达式
    Lambda表达式(LambdaExpression)是C++11引入的一个“语法糖”,可以方便快捷地创建一个“函数对象”。从C++11开始,C++有三种方式可以创建/传递一个可以被调用的对象:函数指针仿函数(Functor)Lambda表达式函数指针函数指针是从C语言老祖宗继承下来的东西,比较原始,功能也比......
  • C++ Lambda表达式的完整介绍
    c++在c++11标准中引入了lambda表达式,一般用于定义匿名函数,使得代码更加灵活简洁。lambda表达式与普通函数类似,也有参数列表、返回值类型和函数体,只是它的定义方式更简洁,并且可以在函数内部定义。什么是Lambda表达式最常见的lambda的表达式写法如下autoplus=[](intv1,int......
  • C++11 lambda表达式精讲
    lambda表达式是C++11最重要也最常用的一个特性之一,C#3.5和Java8中就引入了lambda表达式。 lambda来源于函数式编程的概念,也是现代编程语言的一个特点。C++11这次终于把lambda加进来了。 lambda表达式有如下优点:声明式编程风格:就地匿名定义目标函数或函数对......