結果
問題 | 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 0result = int(tokens[0])for i in range(1, len(tokens), 2):op = tokens[i]num = int(tokens[i+1])if op == '+':result += numelse:result -= numreturn resultdef tokenize(s):tokens = []i = 0n = len(s)while i < n:if s[i] in '+-':# Check if it's a unary operatorif not tokens or (tokens and tokens[-1] in '+-'):num_str = s[i]i += 1while i < n and s[i].isdigit():num_str += s[i]i += 1tokens.append(num_str)else:tokens.append(s[i])i += 1elif s[i].isdigit():num_str = ''while i < n and s[i].isdigit():num_str += s[i]i += 1tokens.append(num_str)else:i += 1return tokensdef 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))