結果
問題 |
No.708 (+ー)の式
|
ユーザー |
![]() |
提出日時 | 2025-03-31 17:24:17 |
言語 | PyPy3 (7.3.15) |
結果 |
AC
|
実行時間 | 39 ms / 2,000 ms |
コード長 | 1,363 bytes |
コンパイル時間 | 140 ms |
コンパイル使用メモリ | 82,600 KB |
実行使用メモリ | 53,688 KB |
最終ジャッジ日時 | 2025-03-31 17:24:44 |
合計ジャッジ時間 | 1,478 ms |
ジャッジサーバーID (参考情報) |
judge5 / judge3 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 12 |
ソースコード
def evaluate_expression(s): tokens = tokenize(s) if not tokens: return 0 result = int(tokens[0]) for i in range(1, len(tokens), 2): op = tokens[i] num = int(tokens[i+1]) if op == '+': result += num else: result -= num return result def tokenize(s): tokens = [] i = 0 n = len(s) while i < n: if s[i] in '+-': # Check if it's a unary operator if not tokens or (tokens and tokens[-1] in '+-'): num_str = s[i] i += 1 while i < n and s[i].isdigit(): num_str += s[i] i += 1 tokens.append(num_str) else: tokens.append(s[i]) i += 1 elif s[i].isdigit(): num_str = '' while i < n and s[i].isdigit(): num_str += s[i] i += 1 tokens.append(num_str) else: i += 1 return tokens def process_expression(s): while '(' in s: left = s.index('(') right = s.index(')', left) substr = s[left+1:right] value = evaluate_expression(substr) s = s[:left] + str(value) + s[right+1:] return evaluate_expression(s) S = input().strip() print(process_expression(S))