RT.
#include<bits/stdc++.h>
using namespace std;
int yxj(char ch){
if(ch=='('||ch==')'){
return 1;
}
else if(ch=='+'||ch=='-'){
return 2;
}
else if(ch=='*'||ch=='/'){
return 3;
}
else{
return 4;
}
}
stack<char>st;
int getnum(int l,string s){
int k=s.size(),sum=0;
for(int i=l;i<k;i++){
if(s[i]>='0'&&s[i]<='9'){
sum*=10;
sum+=s[i]-'0';
}
else{
break;
}
}
return sum;
}
string to__string(int x){
stack<int>stt;
string s;
while(x){
stt.push(x%10);
x/=10;
}
while(stt.size()){
s+=char(stt.top()+'0');
stt.pop();
}
return s;
}
stack<int>st1;
string solve(string s){
if(s[s.size()-2]>='0'&&s[s.size()-2]<='9'){
exit(0);
}
int k=s.size(),weizhi1=0,weizhi2=0,pp=0;
long long sum=0;
for(int i=0;i<k;i++){
if(s[i]>='0'&&s[i]<='9'&&(i==0||!(s[i-1]>='0'&&s[i-1]<='9'))){
st1.push(getnum(i,s));
pp=weizhi1;
weizhi1=i;
}
else if(s[i]=='+'||s[i]=='-'||s[i]=='*'||s[i]=='/'||s[i]=='^'){
weizhi2=i;
int o=st1.top();
st1.pop();
int p=st1.top();
st1.pop();
weizhi1=pp;
if(s[i]=='+'){
sum=o+p;
}
else if(s[i]=='-'){
sum=p-o;
}
else if(s[i]=='*'){
sum=p*o;
}
else if(s[i]=='/'){
sum=p/o;
}
else{
sum=pow(p,o);
}
break;
}
}
string sans;
for(int i=0;i<weizhi1;i++){
sans+=s[i];
}
sans+=to__string(sum);
for(int i=weizhi2+1;i<k;i++){
sans+=s[i];
}
cout<<endl<<sans;
while(st1.size()){
st1.pop();
}
return solve(sans);
}
int main(){
string s,s1;
cin>>s;
int k=s.size();
for(int i=0;i<k;i++){
if(s[i]>='0'&&s[i]<='9'&&(i==0||!(s[i-1]>='0'&&s[i-1]<='9'))){
cout<<getnum(i,s)<<" ";
s1+=to__string(getnum(i,s));
s1+=" ";
}
else if(s[i]=='('){
st.push(s[i]);
}
else if(s[i]==')'){
while(st.top()!='('){
cout<<st.top()<<" ";
s1+=st.top();
s1+=" ";
st.pop();
}
st.pop();
}
else if(s[i]=='^'){
st.push(s[i]);
}
else if(s[i]=='+'||s[i]=='-'||s[i]=='*'||s[i]=='/'){
while(st.size()&&yxj(s[i])<=yxj(st.top())){
cout<<st.top()<<" ";
s1+=st.top();
s1+=" ";
st.pop();
}
st.push(s[i]);
}
}
while(st.size()){
cout<<st.top()<<" ";
s1+=st.top();
s1+=" ";
st.pop();
}
cout<<solve(s1);
return 0;
}
哪位dalao来帮一帮juruo,已经调了两天半了