結果
問題 | No.49 算数の宿題 |
ユーザー |
![]() |
提出日時 | 2019-12-10 20:01:07 |
言語 | C++14 (gcc 13.3.0 + boost 1.87.0) |
結果 |
AC
|
実行時間 | 2 ms / 5,000 ms |
コード長 | 2,046 bytes |
コンパイル時間 | 1,692 ms |
コンパイル使用メモリ | 172,680 KB |
実行使用メモリ | 5,248 KB |
最終ジャッジ日時 | 2024-12-23 02:05:13 |
合計ジャッジ時間 | 2,220 ms |
ジャッジサーバーID (参考情報) |
judge4 / judge2 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
other | AC * 10 |
ソースコード
#include<bits/stdc++.h>using namespace std;using ll = long long;template<class T> using vt = vector<T>;template<class T> using vvt = vector<vt<T>>;template<class T> using ttt = tuple<T,T>;using tii = tuple<int,int>;using tiii = tuple<int,int,int>;using vi = vector<int>;#define rep(i,n) for(int i=0;i<(int)(n);i++)#define pb push_back#define mt make_tuple#define ALL(a) (a).begin(),(a).end()#define FST first#define SEC second#define DEB cerr<<"!"<<endl#define SHOW(a,b) cerr<<(a)<<" "<<(b)<<endlconst int INF = (INT_MAX/2);const ll LLINF = (LLONG_MAX/2);const double eps = 1e-8;const ll DIV =1e9+7;//const double PI = M_PI;inline ll pow(ll x,ll n,ll m){ll r=1;while(n>0){if((n&1)==1)r=r*x%m;x=x*x%m;n>>=1;}return r%m;}inline ll lcm(ll d1, ll d2){return d1 / __gcd(d1, d2) * d2;}#define chmax(a,b) a=max(a,b)/*Coding Space*/string in;int now = 0;vector<int> value;vector<int> ope;void parse(string in){int ret = in[0] - '0';rep(i,in.size()-1){int tar = i + 1;//cerr << in << ' ' << ret << ' ' << ope.size() << ' ' << value.size() << endl;if(in[tar] == ' '){value.insert(value.begin(),ret);return;}else if(in[tar] == '+'){value.insert(value.begin(),ret);ope.insert(ope.begin(),0);ret = -1;tar++;}else if(in[tar] == '*'){value.insert(value.begin(),ret);ope.insert(ope.begin(),1);ret = -1;tar++;}else{if(ret == -1) ret = in[tar] - '0';else{ret *= 10;ret += in[tar] - '0';}}}value.insert(value.begin(),ret);}int main(){cin >> in; in += ' ';parse(in);reverse(ALL(value));reverse(ALL(ope));int ans = value[0]; value.erase(value.begin());while(ope.size()){//cerr << ope.size() << ' ' << value.size() << endl;//cerr << ope.top() << ' ' << value.top() << endl;if(ope[0]) ans += value[0];else ans *= value[0];ope.erase(ope.begin());value.erase(value.begin());//cerr << ans << endl;}cout << ans << endl;}