解题思路:
1.首先分析题意,要求对输入的内容进行计算求值,有乘法和加法运算,那么首先想到的应该是把输入的整数放到一个整数数组中,输入 的字符放到一个字符数组中,然后判断运算符的类型,进行操作
2.首先先读入第一个数,这样,我们就可以利用while循环每次读入两个值,一个是运算符,一个整数,因为涉及到int会溢出,所以,所有的整数和整数数组全部用long long
3.题中说,如果答案超过4位数,那么只需要将后四位输出就行,可以立马想到模运算,用答案直接%10000即可,考虑到在求和求积的过程中,long long会溢出,所以我们输入的时候,还有计算每一步的时候,都去%10000(参考模运算的运算规则)
4.将数字和字符存到数组中后,从后往前扫一遍,如果是乘号,那么将此位置和后一个位置的乘积赋值给此位置,前一个位置变为0,方便一会求和,注意对乘积的结果也要%10000
5.最后,扫一遍整数数组,求和,取模输出
#include<bits/stdc++.h>
using namespace std;
long long a[101000];
char b[100000];
int main()
{
long long num;
char ans;
int cnt=1;
cin>>a[cnt];//先读入第一个数
while(cin>>ans>>num)//依次读入运算符和数字
{
b[cnt]=ans;//运算符存到字符数组中
a[++cnt]=num%10000;//数字存到a数组中
}
for(int i=cnt;i>=1;i--)//从后往前扫一遍
{
if(b[i]=='*')//如果是乘法
{
a[i]=a[i]*a[i+1];//将乘积赋值给i位置的元素值
a[i]=a[i]%10000;//对于a[i]取模
a[i+1]=0;//上一个元素设为0
}
}
long long sum=0;//设置累加器
for(int i=1;i<=cnt;i++)
{
sum=sum+a[i];//依次求和
sum=sum%10000;//每次取模
}
cout<<sum;
return 0;
}