这题主要是找到输入的规律:我们观察书写习惯可以发现,奇数位都是数字,偶数位都是运算符,我们可以在第一个数和第一个运算符上做文章,如果第一个运算符是+,但是我们不能确定第二个运算符是还是+,如果是,就不能直接加上第二个数,这不符合算数运算规律,所以我们再定义一个加和变量,直接将第一个数加到ans中,这样无论第二个运算是什么都不影响,接着将第二个输入的数 赋值给第一个输入的n,继续上术步骤,直到遇到*,我们直接用n*=m,将结果存储到n中,反正下一次循环也要加上n.在此过程中,我们还可以在循环尾部将ans和n每次都模10000,因为最后都是取后四位,无影响,还可以提升运算效率,最后可能n*=后没有加和到ans中,所以最后我们要输出ans+n的和再摸上10000.
#include<iostream>
using namespace std;
int n,m,ans;
char c;
int main(){
cin>>n;
while(cin>>c>>m){
if(c=='+')ans+=n,n=m;
else if(c=='*')n*=m;
ans%=10000;
n%=10000;
}
cout<<(ans+n)%10000<<endl;
return 0;
}