题目如下:
输入仅有一行,为需要你计算的表达式,表达式中只包含数字、加法运算符“+”和乘法运算符“*”,且没有括号,所有参与运算的数字均为 0 到 2 ^ 31 -1 之间的整数。输入数据保证这一行只有 0~ 9、+、*这 12 种字符。 |
|
输出格式: | 输出只有一行,包含一个整数,表示这个表达式的值。注意:当答案长度多于 4 位时,请只输出最后 4 位,前导 0 不输出。 |
来自大佬的一份代码。
很好的地方是,读取一整串代码的时候,将其分开比较。结果只输出最后四位,对10000取模。
认真学习~
代码如下:
#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;
}