题目描述

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

输入输出格式

输入格式:

输入文件为 expr.in。

输入仅有一行,为需要你计算的表达式,表达式中只包含数字、加法运算符“+”和乘

法运算符“*”,且没有括号,所有参与运算的数字均为 0 到 2^31-1 之间的整数。输入数据保

证这一行只有 0~ 9、+、*这 12 种字符。

输出格式:

输出文件名为 expr.out。

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

请只输出最后 4 位,前导 0 不输出。

输入输出样例

输入样例#1: 复制

1+1*3+4
输出样例#1: 复制

8
输入样例#2: 复制

1+1234567890*1
输出样例#2: 复制

7891
输入样例#3: 复制

1+1000000003*1
输出样例#3: 复制

4

说明

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

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

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

#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
#define mod 10000
#define MAXN 1000010
using namespace std;
int tmp[MAXN];
int top1,top2,len;
char s[MAXN],bns[MAXN];
long long stack1[MAXN];
void work(){
int m1=stack1[top1],n1=stack1[top1-];
top1--;
if(bns[top2]=='+')
stack1[top1]=(n1%mod+m1%mod)%mod;
else if(bns[top2]=='*')
stack1[top1]=(n1%mod*m1%mod)%mod;
top2--;
}
int main(){
tmp[]=;tmp[]=;
scanf("%s",s);
len=strlen(s);
long long num=;
for(int i=;i<len;i++){
if(s[i]>=''&&s[i]<='') num=num*+s[i]-'';
else{
if(num!=){
stack1[++top1]=num;
num=;
}
if(tmp[s[i]]<tmp[bns[top2]]) bns[++top2]=s[i];
else{
while(tmp[s[i]]>=tmp[bns[top2]]&&top2>) work();
bns[++top2]=s[i];
}
}
}
if(num!=){ stack1[++top1]=num;num=; }
while(top2>) work();
cout<<stack1[]%mod;
}

80gg

#include<cstdio>
#include<iostream>
#include<algorithm>
#include<cmath>
#include<cstring>
#include<string>
using namespace std;
int main()
{
long long shu,sum=,cj,sg;//记得sum初始值赋为0;cj为其中一段运算(即一段连续的乘积)的值
char ch=,xg;//ch存储上一个运算符,xg为新读入的运算符
bool tf=true;
while(tf)
{
scanf("%lld",&shu);
tf=scanf("%c",&xg)==?true:false;//如果下一个没有运算符了,则tf=false,既保证了此次循环的正常运行,又能在下一遍循环跳出
if(ch==)cj=shu;//如果是刚开始读入,则直接赋值
if(ch=='+')sum=(sum+cj)%,cj=shu;//如果上一个操作是加法,则将前一段的值加入到sum中,然后再更新此新段的值
if(ch=='*')cj=(cj*shu)%;//如果上一个运算仍是乘法,则将此数乘入本段的值中
if(!tf)sum=(sum+cj)%;//如果是最后一个元素,则进行最后的更新
ch=xg;//将下一个读入的运算符作为新的一个循环的上一个运算符,并继续循环
}
printf("%lld",sum);//输出
return ;
}

std

最新文章

  1. (一)Netty源码学习笔记之概念解读
  2. [k]css盒模型
  3. C# Stream 和 byte[] 之间的转换(文件流的应用)
  4. swiper初步探索
  5. ibeacon的使用和应用场景简单示例
  6. mvc项目架构搭建之UI层的搭建
  7. C++开发者都应该使用的10个C++11特性
  8. 实现接口IDisposable的示例
  9. python基础之python中if __name__ == &#39;__main__&#39;: 的解析
  10. Oracle 11gR2 RAC ohasd failed to start 解决方法
  11. 开源一个上架 App Store 的相机 App
  12. 关于Ueditor存储在mysql&quot;UTF-8&quot;乱码的问题
  13. 【Noip2015】斗地主
  14. Spark大型电商项目实战-及其改良之番外(1)-将spark前端页面效果高效拷贝至博客
  15. CODEFORCES掉RATING记 #2
  16. 关于jQuery.ajax()的jsonp碰上post详解
  17. 微服务架构与实践3_api
  18. php格式化数字输出number_format
  19. 学习微信小程序及知识占及v-if与v-show差别
  20. (转) Rabbitmq学习笔记

热门文章

  1. ArchLinux 调节屏幕亮度和音量大小
  2. CF19E Fairy(树上差分)
  3. Laravel核心解读--HTTP内核
  4. 安装虚拟机(VM)(一)
  5. mysql(for update)悲观锁总结与实践
  6. Swift:UIKit中Demo(一)
  7. thinkphp5项目--企业单车网站(六)
  8. POJ2411 状态压缩dp
  9. Docker -- 系统整洁之道 -- 1
  10. 参考《深度学习原理与应用实践》中文PDF