您当前的位置: 首页 > 

贤鱼不闲

暂无认证

  • 3浏览

    0关注

    75博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

贤鱼的刷题日常--P1981 [NOIP2013 普及组] 表达式求值

贤鱼不闲 发布时间:2022-09-28 07:00:00 ,浏览量:3

🏆今日学习目标: 🍀学习表达式求值题目 ✅创作者:贤鱼 ⏰预计时间:25分钟 🎉个人主页:贤鱼的个人主页 🔥专栏系列:c++ 请添加图片描述

表达式求值
  • 题目
  • 思路
  • AC代码
  • 🏆结束语:如果有需要可以订阅一下专栏,持续更新内容!

题目

给定一个只包含加法和乘法的算术表达式,请你编程计算表达式的值。 输入格式 一行,为需要你计算的表达式,表达式中只包含数字、加法运算符 “+” 和乘法运算符 “×”,且没有括号,所有参与运算的数字均为 0 到 2^31 之间的整数。 输入数据保证这一行只有 0-9、+、× 这 12种字符。 输出格式 一个整数,表示这个表达式的值。 注意:当答案长度多于 4 位时,请只输出最后 4 位,前导 0 不输出。 输入输出样例 输入 #1复制 1+13+4 输出 #1复制 8 输入 #2复制 1+12345678901 输出 #2复制 7891 输入 #3复制 1+1000000003*1 输出 #3复制 4 说明/提示 对于 30% 的数据,0≤0≤ 表达式中加法运算符和乘法运算符的总数 ≤100。 对于 80% 的数据,0≤0≤ 表达式中加法运算符和乘法运算符的总数 ≤1000。 对于 100% 的数据,0≤0≤ 表达式中加法运算符和乘法运算符的总数 ≤100000。

思路

题目中明确说明了只有*和+,*优先众所周知,所以我们可以优先处理 *,假设这个是 ,那么他前后的数字就要相乘,我们让i+1=i(i+1)个数字,这样子可以避免连续乘号导致出现错误,我们在最后再将所有答案全部相加就好了(注意题目要求只输出4位,所以我们每次处理%10000和最后答案%10000就可以完美处理)

AC代码
#include
#include
#include
#include
using namespace std;
int ans=0,a;
char s[100001000];//储存输入内容(貌似不需要这么大。。)
char fh[101010000];
int num[101010100];//上头的fh是单独储存所以的运算符,这个num是储存所有的数字
int main(){
	cin>>s;
	int nn=0,f=0;
	int len=strlen(s);
	for(int i=0;i            
关注
打赏
1664987740
查看更多评论
0.0840s