欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

表达式求值

程序员文章站 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;
}
相关标签: 蓝桥杯