题目描述
给定一个只包含加法和乘法的算术表达式,请你编程计算表达式的值。
输入输出格式
输入格式:
一行,为需要你计算的表达式,表达式中只包含数字、加法运算符“+++”和乘法运算符“× \times ×”,且没有括号,所有参与运算的数字均为 000 到 231−12^{31}-1231−1 之间的整数。
输入数据保证这一行只有0−9 0-90−9、+++、× \times ×这 1212 12种字符。
输出格式:
一个整数,表示这个表达式的值。
注意:当答案长度多于 444 位时,请只输出最后4 44 位,前导0 00 不输出。
输入输出样例
输入样例#1: 复制
1+1*3+4
输出样例#1: 复制
8
输入样例#2: 复制
1+1234567890*1
输出样例#2: 复制
7891
输入样例#3: 复制
1+1000000003*1
输出样例#3: 复制
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。
思路
如果 此时得到的是加号那么说明前面的运算可以结束了,继续下面的处理
如果得到的是乘号那么需要接着上一部分处理
别忘了 clt +z
#include<iostream>
#include<cstdio>
using namespace std;
int main(){
int ans=0,p,a;
char s;
cin>>p;
while(cin>>s){
cin>>a;
if(s=='+'){
ans+=p;
ans%=10000;
p=a;
}else if(s=='*'){
p*=a;
p%=10000;
}
}
ans+=p;
printf("%d",ans%10000);
}
我还是好弱啊~~~~~