結果

問題 No.3278 Avoid Division
ユーザー 👑 loop0919
提出日時 2025-09-19 23:15:58
言語 PyPy3
(7.3.15)
結果
WA  
実行時間 -
コード長 1,657 bytes
コンパイル時間 394 ms
コンパイル使用メモリ 82,224 KB
実行使用メモリ 55,544 KB
最終ジャッジ日時 2025-09-19 23:16:04
合計ジャッジ時間 4,786 ms
ジャッジサーバーID
(参考情報)
judge3 / judge1
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 1
other AC * 18 WA * 6
権限があれば一括ダウンロードができます

ソースコード

diff #

class Var:
    def __init__(self, val, idx):
        self.idx = idx
        self.val = val

    def __str__(self):
        return chr(self.idx + ord("a"))


class ArrayVal:
    def __init__(self, val, idx):
        self.idx = idx
        self.val = val

    def __str__(self):
        return f"A[{self.idx + 1}]"


Value = Var | ArrayVal


N = int(input())
variables = [Var(0, i) for i in range(26)]

answer = []


def add(x: Var, y: Value, z: Value):
    global variables
    variables[x.idx] = Var(0 if y.val == 0 and z.val == 0 else 1, x.idx)
    answer.append(f"add {x} {y} {z}")


def mul(x: Var, y: Value, z: Value):
    global variables
    variables[x.idx] = Var(0 if y.val == 0 or z.val == 0 else 1, x.idx)
    answer.append(f"mul {x} {y} {z}")


def div(x: Var, y: Value, z: Value):
    global variables
    variables[x.idx] = Var(1, x.idx)
    answer.append(f"div {x} {y} {z}")


commands, A = [], []

for i in range(N):
    cmd, a = input().split()
    a = int(a)

    commands.append(cmd)
    A.append(ArrayVal(a, i))


for i in range(N):
    cmd = commands[i]
    a = A[i]

    if cmd == "+":
        if variables[1].val == 0:
            add(variables[0], variables[1], a)
        else:
            mul(variables[-1], variables[1], a)
            add(variables[0], variables[0], variables[-1])
    elif cmd == "*":
        mul(variables[0], variables[0], a)
    elif cmd == "/":
        if variables[1].val == 0:
            add(variables[1], variables[1], a)
        else:
            mul(variables[1], variables[1], a)

if variables[1].val > 0:
    div(variables[0], variables[0], variables[1])

print(len(answer))
print(*answer, sep="\n")
0