結果
問題 | No.49 算数の宿題 |
ユーザー |
![]() |
提出日時 | 2015-08-31 20:57:34 |
言語 | C++11 (gcc 13.3.0) |
結果 |
AC
|
実行時間 | 2 ms / 5,000 ms |
コード長 | 1,928 bytes |
コンパイル時間 | 834 ms |
コンパイル使用メモリ | 80,536 KB |
実行使用メモリ | 5,248 KB |
最終ジャッジ日時 | 2024-12-23 01:46:28 |
合計ジャッジ時間 | 1,378 ms |
ジャッジサーバーID (参考情報) |
judge5 / judge2 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
other | AC * 10 |
ソースコード
#include <iostream>#include <vector>#include <string>#include <cstring>#include <algorithm>#include <sstream>#include <map>#include <set>#include <stack>#define REP(i,k,n) for(int i=k;i<n;i++)#define rep(i,n) for(int i=0;i<n;i++)#define INF 1<<30#define pb push_back#define mp make_pairusing namespace std;typedef long long ll;typedef pair<int,int> P;vector<string> split(const string &str, char delim) {vector<string> res;size_t current = 0, found;while((found = str.find_first_of(delim, current)) != string::npos) {res.push_back(string(str, current, found - current));current = found + 1;}res.push_back(string(str, current, str.size() - current));return res;}int stringtoi(string s) {stringstream ss;int ret;ss << s;ss >> ret;return ret;}int main() {string s;cin >> s;vector<string> v;stringstream ss;rep(i,s.size()) {if(s[i] == '*') {v.push_back(ss.str());v.push_back("*");ss.str("");ss.clear(stringstream::goodbit);}else if(s[i] == '+') {v.push_back(ss.str());v.push_back("+");ss.str("");ss.clear(stringstream::goodbit);} else {ss << s[i];if(i == s.size()-1) {v.push_back(ss.str());}}}stack<int> st;rep(i,v.size()) {if(v[i] == "*") {int a = st.top();st.pop();int b = stringtoi(v[i+1]);st.push(a+b);i++;}else if(v[i] == "+") {int a = st.top();st.pop();int b = stringtoi(v[i+1]);st.push(a*b);i++;} else {st.push(stringtoi(v[i]));}}cout << st.top() << endl;return 0;}