結果
| 問題 |
No.1135 RPN
|
| ユーザー |
damin
|
| 提出日時 | 2020-11-04 02:56:45 |
| 言語 | Python3 (3.13.1 + numpy 2.2.1 + scipy 1.14.1) |
| 結果 |
AC
|
| 実行時間 | 31 ms / 2,000 ms |
| コード長 | 2,425 bytes |
| コンパイル時間 | 128 ms |
| コンパイル使用メモリ | 12,672 KB |
| 実行使用メモリ | 10,880 KB |
| 最終ジャッジ日時 | 2024-07-22 09:37:16 |
| 合計ジャッジ時間 | 1,406 ms |
|
ジャッジサーバーID (参考情報) |
judge4 / judge1 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 3 |
| other | AC * 16 |
ソースコード
import sys
try:
import os
f = open('input.txt', 'r')
sys.stdin = f
except FileNotFoundError:
None
from math import sqrt, ceil
input=lambda: sys.stdin.readline().strip()
n=int(input())
s=list(map(str,input().split()))
now=0
# def expr():
# global now
# ans= term()
# while now<n and s[now] not in "+-" :
# y = expr()
# op = s[now]
# now+=1
# if op =="+":
# ans+= y
# else:
# ans-=y
# return ans
#
#
# def term():
# global now
# if now >=n:
# return 0
# elif n-2 <= now:
# # print(s[now],now)
# x = int(s[now])
# now +=1
# return x
# elif s[now].isdecimal() and s[now+1].isdecimal() and s[now+2] in "+-":
# x = int(s[now])
# y = int(s[now+1])
# op = s[now+2]
# now+=3
# if op=="+": return x+y
# return x-y
# # elif all([s[i].isdecimal() for i in range(now,now+3)]):
# else:
#
# x = int(s[now]); now+=1
# y = term()
# op = s[now]
# now+=1
# if op=="+":return x+y
# return x-y
# # now+=1
# # return int(s[now])
#
#
#
# print(expr())
def expr():
global now
x = term()
ans = x
while now<n and s[now].isdecimal():
y = expr()
op = s[now] ;now+=1
# print(x,y,op,now)
if op =="+":ans +=y
else: ans-=y
return ans
# def term():
# global now
# if n-2 <= now:
# now+=1
# return int(s[now-1])
# if s[now].isdecimal() and s[now+1].isdecimal() and s[now+2] in "+-":
# op= s[now+2]
# now+=3
# if op=="+":
# return int(s[now-3])+ int(s[now-2])
# else:
# return int(s[now-3])-int(s[now-2])
# else:
# now+=1
# return int(s[now-1])
def term():
global now
if now >=n:
return 0
elif n-2 <= now:
# print(s[now],now)
x = int(s[now])
now +=1
return x
elif s[now].isdecimal() and s[now+1].isdecimal() and s[now+2] in "+-":
x = int(s[now])
y = int(s[now+1])
op = s[now+2]
now+=3
# print("term-d",x,y,op,now)
if op=="+": return x+y
return x-y
# elif all([s[i].isdecimal() for i in range(now,now+3)]):
else:
x = int(s[now])
now+=1
return x
print(expr())
damin