幽灵特工 @ 2021-01-04 12:54:01
#include<bits/stdc++.h>
using namespace std;
string s;
stack <long long> k;
int main(){
cin>>s;
for(int i=0;s[i]!='@';i++){
int w=0;
switch (s[i]){
case '+':{
long long a=k.top();
k.pop();
long long b=k.top();
k.pop();
k.push(a+b);
break;
}
case '-':{
long long a=k.top();
k.pop();
long long b=k.top();
k.pop();
k.push(a-b);
break;
}
case '*':{
long long a=k.top();
k.pop();
long long b=k.top();
k.pop();
k.push(a*b);
break;
}
case '/':{
long long a=k.top();
k.pop();
long long b=k.top();
k.pop();
k.push(a/b);
break;
}
case '.':{
k.push(w);
break;
}
default:{
w+=s[i]-'0';
break;
}
}
}
long long ans=k.top();
cout<<ans;
}
by Terraria @ 2021-01-04 13:21:11
w+=s[i]-'0';
这个错了。
对于一个大于2位的数字你就算错了。
by 幽灵特工 @ 2021-01-05 20:17:48
@黄耀风 我这不是char型么