P1981 [NOIP2013 普及组] 表达式求值求解,帮助者必关
查看原帖
P1981 [NOIP2013 普及组] 表达式求值求解,帮助者必关
1271480
wujunxi206楼主2024/9/23 13:31

我的代码不知道为什么,只会输出算式的第一个数字,求大佬指点, 帮助者必关!

#include<iostream>
#include<queue>
using namespace std;
string s,x="";
queue<int> q,a; 
int main(){
    cin>>s;
    int ls=s.size();
    int sum=0;
    for(int i=0;i<ls;i++){
        if(s[i]!='+'&&s[i]!='*'){
            sum*=10;
            sum+=(s[i]-'0');
            sum%=10000;
        }else{
            q.push(sum%10000);
            sum=0;
            x=s[i]+x;
        }
    }
    int lx=x.size();
    int t=1;
    int n=q.front(),m=0,bj=0;
    for(int i=0;i<lx;i++){
        if(x[i]=='*'){
            m=q.front();
            q.pop();
            a.push(m*n%10000);
            bj=1;
        }else{
            m=q.front();
            q.pop();
            if(bj==1){
                n=q.front();
                q.pop();
                bj=0;
            }
            a.push(m);
        }
    }
    int ans=0;
    int la=a.size();
    for(int i=1;i<=la;i++){
        int a_i=a.front();
        ans+=a_i;
        ans%=10000;
    }
    cout<<ans%10000<<endl;
    return 0;
}
2024/9/23 13:31
加载中...