#C07L09P04. C07.L09.STL之栈.引例2.表达式求值(noip2013普及)
C07.L09.STL之栈.引例2.表达式求值(noip2013普及)
题目描述
给定一个只包含加法和乘法的算术表达式,请你编程计算表达式的值。
输入格式
输入仅有一行,为需要你计算的表达式,表达式中只包含数字、加法运算符 “+” 和乘法运算符 “*” ,且没有括号,所有参与运算的数字均为 0 到 2^31 -1 之间的整数。输入数据保证这一行只有 0~ 9、+、*这 2 种字符。
数据范围
对于 30% 的数据,0 ≤ 表达式中加法运算符和乘法运算符的总数 ≤ 100;
对于 80%的数据,0 ≤ 表达式中加法运算符和乘法运算符的总数 ≤ 1000;
对于 100%的数据,0 ≤ 表达式中加法运算符和乘法运算符的总数 ≤ 100000。
输出格式
输出只有一行,包含一个整数,表示这个表达式的值。 注意: 当答案长度多于 4 位 时,请只输出最后 4 位 , 前导 0 不输出。
样例
1+1*3+4
8
1+1234567890*1
7891
1+1000000003*1
4
样例解释
样例 1 计算的结果为 8,直接输出 8。
样例 2 计算的结果为 1234567891,输出后 4 位,即 7891。
样例 3 计算的结果为 1000000004,输出后 4 位,即 4。
程序填空
#include<bits/stdc++.h>
using namespace std;
stack <int> s;
int main()
{
char c;
int num,ans=0;
cin>>num;
num = num % 10000;
填空(1)
while(cin>>c>>num)
{
if(c=='*')
{
num = 1ll* 填空(2) *num%10000;
填空(3) ;
}
else
num = num%10000;
填空(4) ;
}
while(!s.empty())
{
ans += 填空(5) ;
ans = ans%10000;
填空(6) ;
}
printf("%d",ans);
return 0;
}
填空(1) {{ input(1) }}
填空(2) {{ input(2) }}
填空(3) {{ input(3) }}
填空(4) {{ input(4) }}
填空(5) {{ input(5) }}
填空(6) {{ input(6) }}
相关
在以下作业中: