1180: [NOIP2013普及组]表达式求值
Time Limit: 1 Sec Memory Limit: 128 MBSubmit: 38 Solved: 12
[ Submit][ Status][ Web Board]
Description
给定一个只包含加法和乘法的算术表达式,请你编程计算表达式的值。
Input
输入仅有一行,为需要你计算的表达式,表达式中只包含数字、加法运算符“+”和乘法运算符“*”,且没有括号
,所有参与运算的数字均为0到231-1之间的整数。输入数据保证这一行只有0~ 9、+、*这12种字符。
0≤表达式中加法运算符和乘法运算符的总数≤100000
,所有参与运算的数字均为0到231-1之间的整数。输入数据保证这一行只有0~ 9、+、*这12种字符。
0≤表达式中加法运算符和乘法运算符的总数≤100000
Output
输出只有一行,包含一个整数,表示这个表达式的值。
注意:当答案长度多于4位时,请只输出最后4位,前导0不输出。
注意:当答案长度多于4位时,请只输出最后4位,前导0不输出。
Sample Input
1+1*3+4
Sample Output
8
AC代码:
#include<cstdio>
#include<iostream>
#include<algorithm>
using namespace std;
const int mod = 10000;
int main(){
int sum = 0, a = 0;
char ch = '!';//初始化任意东西
while(1){
if(ch == '\n') break;
a = 0;
ch = getchar();
while(ch >= '0' && ch <= '9'){
a = a * 10 + ch - '0';
ch = getchar();
}
while(ch == '*'){
int b = 0;
ch = getchar();
while(ch >= '0' && ch <= '9'){
b = b * 10 + ch - '0';
ch = getchar();
}
a = (a * b) % mod;
}
sum = (sum + a) % mod;
}
printf("%d", sum % mod);
return 0;
}