真的坑,注意开long long.不太熟悉流。只能自己慢慢提取数字,好在也不太难。
#include<iostream>
#include<cstdio>
#include<stack>
using namespace std;
int main(){
char s[300],c;
int i=1;
while(c=getchar()){ //输入字符串
s[i++]=c;
if(c=='@'){
s[i]='\0';
break;
}
}
s[0]=' ';
stack<long long> st;
for(i=1;(s[i]<='9'&&s[i]>='0')||s[i]==' ';i++){ //提取数字;
if(s[i]==' '){
long long t=1,num=0;
for(int j=i-1;s[j]!=' ';j--){
num+=(s[j]-'0')*t;
t*=10;
}
st.push(num);
}
}
for(;s[i]!='@';i++){
if(s[i]=='+'){
long long n1=st.top();st.pop();
long long n2=st.top();st.pop();
st.push(n1+n2);
}
if(s[i]=='-'){
long long n1=st.top();st.pop();
long long n2=st.top();st.pop();
st.push(n2-n1);
}
if(s[i]=='*'){
long long n1=st.top();st.pop();
long long n2=st.top();st.pop();
st.push(n1*n2);
}
if(s[i]=='/'){
long long n1=st.top();st.pop();
long long n2=st.top();st.pop();
st.push(n2/n1);
}
}
cout<<st.top();
return 0;
}