結果
問題 |
No.2595 Parsing Challenge
|
ユーザー |
|
提出日時 | 2023-12-24 15:19:37 |
言語 | PyPy3 (7.3.15) |
結果 |
RE
|
実行時間 | - |
コード長 | 2,316 bytes |
コンパイル時間 | 806 ms |
コンパイル使用メモリ | 82,568 KB |
実行使用メモリ | 328,160 KB |
最終ジャッジ日時 | 2024-09-27 13:45:03 |
合計ジャッジ時間 | 22,015 ms |
ジャッジサーバーID (参考情報) |
judge5 / judge1 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 5 |
other | AC * 24 RE * 6 TLE * 1 -- * 24 |
ソースコード
def evaluate_expression(s): def parse_nonzero_digit(s, index): return int(s[index]), index + 1 def parse_digit(s, index): if s[index] == '0': return 0, index + 1 else: return parse_nonzero_digit(s, index) def parse_positive_number(s, index): if s[index] == '0': return parse_digit(s, index) else: value, next_index = parse_nonzero_digit(s, index) while next_index < len(s) and s[next_index].isdigit(): digit, next_index = parse_digit(s, next_index) value = value * 10 + digit return value, next_index def parse_number(s, index): if s[index] == '-': value, next_index = parse_number(s, index + 1) return -value, next_index elif s[index].isdigit(): return parse_positive_number(s, index) else: raise ValueError("Invalid number format") def parse_factor(s, index): if s[index] == '(': value, next_index = parse_expression(s, index + 1) if s[next_index] == ')': return value, next_index + 1 else: raise ValueError("Mismatched parentheses") else: return parse_number(s, index) def parse_term(s, index): left, next_index = parse_factor(s, index) while next_index < len(s) and (s[next_index] == '*' or s[next_index] == '/'): operator = s[next_index] right, next_index = parse_factor(s, next_index + 1) if operator == '*': left *= right else: raise ValueError("Unsupported operator: '/'") return left, next_index def parse_expression(s, index): left, next_index = parse_term(s, index) while next_index < len(s) and (s[next_index] == '+' or s[next_index] == '-'): operator = s[next_index] right, next_index = parse_term(s, next_index + 1) if operator == '+': left += right else: left -= right return left, next_index result, _ = parse_expression(s, 0) return result n=int(input()) expression = str(input()) result = evaluate_expression(expression) print(result)