XinFengIneverleft @ 2023-08-26 16:30:42
#1 AC\ #2 #4 RE\ #3 #5 #6 WA
#include <bits/stdc++.h>
using namespace std;
int sum;
int main() {
string s;
cin >> s;
int lens = s.length();
stack<char> a;
char x, y, z;
for (int i = 0; i < lens; i++) {
a.push(s[i]);
if (a.top() == '+') {
a.pop();
a.pop();
x = a.top() - 48;
a.pop();
a.pop();
y = a.top() - 48;
a.pop();
z = (x + y) + 48;
a.push(z);
a.push('.');
}
if (a.top() == '-') {
a.pop();
a.pop();
x = a.top() - 48;
a.pop();
a.pop();
y = a.top() - 48;
a.pop();
z = (y - x) + 48;
a.push(z);
a.push('.');
}
if (a.top() == '*') {
a.pop();
a.pop();
x = a.top() - 48;
a.pop();
a.pop();
y = a.top() - 48;
a.pop();
z = (x * y) + 48;
a.push(z);
a.push('.');
}
if (a.top() == '/') {
a.pop();
a.pop();
x = a.top() - 48;
a.pop();
a.pop();
y = a.top() - 48;
a.pop();
z = (y / x) + 48;
a.push(z);
a.push('.');
}
}
cout << a.top() - 48;
return 0;
}
by Lzc0316 @ 2023-08-28 11:33:04
操作数可能是两位数三位数,所以不能单字符入栈
这是我的代码
#include<bits/stdc++.h>
using namespace std;
int main(){
string s;
cin>>s;
stack<long long>a;
long long e=0;/*暂存数字的容器*/
for(long long t=0;t<s.size();t++){
if(s[t]>='0'&&s[t]<='9')e=e*10+(s[t]-'0');/*如果是数字就输入到容器(因为操作数可能不止一位)*/
if(s[t]=='.'){
a.push(e);
e=0;/*如果是结束符就把数字入栈,清空容器*/
}
if(s[t]=='+'||s[t]=='-'||s[t]=='*'||s[t]=='/'){
/*x和y的顺序是反过来的 */
long long y=a.top();
a.pop();
long long x=a.top();
a.pop();
if(s[t]=='+')a.push(x+y);
if(s[t]=='-')a.push(x-y);
if(s[t]=='*')a.push(x*y);
if(s[t]=='/')a.push(x/y);
}
if(s[t]=='@')cout<<a.top();
}
return 0;
}
by XinFengIneverleft @ 2023-08-28 19:13:49
@Lzc0316 好的谢谢大佬