結果
問題 |
No.708 (+ー)の式
|
ユーザー |
![]() |
提出日時 | 2025-06-29 02:25:12 |
言語 | C++17(gcc12) (gcc 12.3.0 + boost 1.87.0) |
結果 |
AC
|
実行時間 | 2 ms / 2,000 ms |
コード長 | 794 bytes |
コンパイル時間 | 4,583 ms |
コンパイル使用メモリ | 209,240 KB |
実行使用メモリ | 7,844 KB |
最終ジャッジ日時 | 2025-06-29 02:25:18 |
合計ジャッジ時間 | 5,631 ms |
ジャッジサーバーID (参考情報) |
judge3 / judge5 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 12 |
ソースコード
#include<bits/stdc++.h> using namespace std; string S; int read_exp(int &i); int read_term(int &i){ cerr << i << "÷\n"; if('0' <= S[i] && S[i] <= '9'){ return S[i++] - '0'; }else{ assert(S[i] == '('); i++; int ret = read_exp(i); assert(S[i++] == ')'); return ret; } } int read_exp(int &i){ cerr << i << "\n"; int ret1 = read_term(i); cerr << ret1 << " " << i << "\n"; while(i < S.size()){ assert(S[i] == '+' || S[i] == '-'); char op = S[i++]; int ret2 = read_term(i); cerr << i << " " << ret1 << " " << ret2 << "\n"; if(op == '+'){ ret1 += ret2; }else{ ret1 -= ret2; } if(S[i] == ')'){ break; } } return ret1; } int main(){ int index = 0; cin >> S; cout << read_exp(index) << "\n"; }