1 条题解
-
0
思路
空格分隔非负操作数,@结束,减除保持顺序,保证整除;绝对值可超过有符号64位,标程128位。
参考程序(C++11)
#include <bits/stdc++.h> using namespace std; void out(__int128 x){if(x<0){cout<<'-';x=-x;}if(x>=10)out(x/10);cout<<char('0'+x%10);}int main(){string s;getline(cin,s);vector<__int128>st;for(size_t i=0;i<s.size();){char c=s[i];if(isdigit(c)){__int128 v=0;while(i<s.size()&&isdigit(s[i]))v=v*10+s[i++]-'0';st.push_back(v);}else{++i;if(c=='@')break;if(c=='+'||c=='-'||c=='*'||c=='/'){auto b=st.back();st.pop_back();auto a=st.back();st.pop_back();st.push_back(c=='+'?a+b:c=='-'?a-b:c=='*'?a*b:a/b);}}}out(st.back());cout<<'\n';}
- 1