中野's workspace

  • Profile
  • Privacy
  • Contact

2021/11/17

C - Train Ticket をpythonで解く

  • #atcoder

目次

問題

問題のリンク↓
https://atcoder.jp/contests/abc079/tasks/abc079_c

文字列ABCDが与えられるので、間に + か - を入れて合計7になるような式を出力せよというもの。

解き方

C - たくさんの数式をpythonで解く と同じようにbit全探索を使っていけば良さそう。

まず数式を作る。

S = input()

for i in range(2 ** 3):
	f = S[0]
    
	for j in range(3):
		if i >> j &1:
			f += '+'
		else:
			f += '-'
		f += S[j +1]
	print(f)

各文字列の間に+か-を入れるパターンを全て洗い出す。

input

3242

output

3-2-4-2
3+2-4-2
3-2+4-2
3+2+4-2
3-2-4+2
3+2-4+2
3-2+4+2
3+2+4+2

想定通り。

evelで文字列を式年て計算出来るらしい。

計算した結果、7である場合に数式を出力すれば良い。

S = input()

for i in range(2 ** 3):
	f = S[0]
    
	for j in range(3):
		if i >> j &1:
			f += '+'
		else:
			f += '-'
		f += S[j +1]
	if eval(f) == 7:
		f += '=7'
		print(f)
		exit(0)

AC
https://atcoder.jp/contests/abc079/submissions/26267292

このエントリーをはてなブックマークに追加
  • Copyright © 2019. Makoto Nakano
  • ALL Tags