表达式求值 (字符串)
表达式求值
https://ac.nowcoder.com/acm/problem/16539
用ti来判断是否要有乘法,如果有乘法的话ti的值为上个数的值,即为要乘的数,直接用sign乘上ti就得到这个值了,如果ti==-1就代表暂时没有乘法,只需要正常进行加法运算就可以。
输出后四位一直%10000就可以了。
#include<iostream> using namespace std; int main(){ string s; cin>>s; int n=s.length(); int ans=0; int ti=-1; int i=0; while(i<n){ int sign=0; while(i<n&&s[i]>='0'&&s[i]<='9'){ sign=(s[i]-'0'+sign*10)%10000; i++; } if(i==n||s[i]=='+'){ if(ti!=-1){ ti=ti*sign%10000; ans+=ti; ans=ans%10000; ti=-1; } else{ ans=ans+sign; ans=ans%10000; } } else if(s[i]=='*'){ if(ti==-1){ ti=1; } ti=ti*sign%10000; } i++; } cout<<ans<<endl; return 0; }