bit全検索を使って解く
問題文
https://atcoder.jp/contests/abc045/tasks/arc061_a
ロジック
- 与えられた文字列の各文字間に
+を入れる・入れないを全検索する => 2**(len(S)-1)の範囲でbit全検索 -
+を入れると数値が切れるので、ansに足しこむ+を入れない場合は一桁増えるので* 10するfor i in range(len(S)): if (b>>i) & 1: ans += tmp*10 + int(S[i]) tmp = 0 else: tmp = tmp*10 + int(S[i])
提出したコード
S = input()
ans = 0
for b in range(2**(len(S)-1)):
tmp = 0
for i in range(len(S)):
if (b>>i) & 1:
ans += tmp*10 + int(S[i])
tmp = 0
else:
tmp = tmp*10 + int(S[i])
ans += tmp
print(ans)