表达式求值
程序员文章站
2022-03-31 19:41:20
...
题目
题目描述
给定一个只包含加法和乘法的算术表达式,请你编程计算表达式的值的最后四位。
输入格式
输入仅有一行,为需要你计算的表达式,表达式种只包含数字,加法运算符‘+’和乘法运算符‘*’,且没有括号,所有参与运算的数字均为0到2的31次方减1之间的整数。输入数据保证这一行只有0~9,‘+’,‘ *‘ 这12种字符。(输入字符串长度不超过600000)
输出格式
输出只有一行,包含一个整数,表示这个表达式的值。注意:当答案长度多余4时,请只输出最后4位。不要输出多余的前导零。
样例输入1
1+1*3+4
样例输出1
8
样例输入2
1+1234567890*1
样例输出2
7891
题解
代码:
#include<cstdio>
#include<string.h>
char a[600000+5];
int num[60000+5]={0};
char cha[60000];
int main(){
int ans=0;
int k=0,w=0;
gets(a);
for(int i=0;i<strlen(a);){
if(a[i]>='0' && a[i]<='9'){
while(a[i]>='0' && a[i]<='9'){
num[k]*=10;
num[k]+=a[i]-'0';
i++;
}
k++;
}
else
cha[w++]=a[i++];
}
for(int i=0;i<w;i++)
if(cha[i]=='*'){
num[i+1]=(num[i]%10000)*(num[i+1]%10000);
num[i]=0;
}
for(int i=0;i<k;i++)
ans+=num[i]%10000;
printf("%d\n",ans%10000);
return 0;
}
上一篇: 吃鸡蛋常犯八个错误 沸水煮鸡蛋大火炒鸡蛋
下一篇: DAS+机械硬盘能秒大容量固态?