ABC079 C - Train Ticket
備忘録
問題
回答
import sys import os ii = lambda: int(sys.stdin.buffer.readline().rstrip()) il = lambda: list(map(int, sys.stdin.buffer.readline().split())) iln = lambda n: [int(sys.stdin.buffer.readline().rstrip()) for _ in range(n)] iss = lambda: sys.stdin.buffer.readline().decode().rstrip() isn = lambda n: [sys.stdin.buffer.readline().decode().rstrip() for _ in range(n)] def main(): if os.getenv("LOCAL"): sys.stdin = open("input.txt", "r") *S, = iss() E = ['+', '-'] tmp = [0] * 7 for e in E: tmp[0] = S[0] tmp[1] = e for e in E: tmp[2] = S[1] tmp[3] = e for e in E: tmp[4] = S[2] tmp[5] = e tmp[6] = S[3] ans = ''.join(map(str, tmp)) if eval(ans) == 7: print(ans + '=7') exit() if __name__ == '__main__': main()
考え方
A, B, C, D
に対して+
または-
を使用して作ることが出来る式は、
8通り(2^3
)程度なので、愚直にすべてのパターンを生成して回答した。
もっと良い書き方がないか、ほかの参加者の回答を見ていたところ、
デカルト積(itertools.product
)を使用して簡潔に書かれていた方がいたので、リンクだけ張っておく。