考え方
文字列$S$の長さを$N$とすると,$N-1$箇所に$+$を入れる方法を全通り試せばよい.これはbit全探索で実現できる.最終的に求めたいのは総和なので,
- $+$の直後の文字列から次に$+$が出るまでの文字列を記憶し,
- $+$が出たら,それまで記憶していた文字列を数値に変換して総和に加算し,
- 記憶していた文字列をリセットする
【回答例(リスト)】
S = input() N = len(S) ans = 0 for i in range(1 << (N - 1)): tmp = [S[0]] for j in range(N - 1): if i & 1 << j: ans += int(''.join(tmp)) tmp = [S[j + 1]] else: tmp.append(S[j + 1]) else: ans += int(''.join(tmp)) print(ans)
【回答例(文字列)】
S = input() N = len(S) ans = 0 for i in range(1 << (N - 1)): tmp = S[0] for j in range(N - 1): if i & 1 << j: ans += int(tmp) tmp = S[j + 1] else: tmp += S[j + 1] else: ans += int(tmp) print(ans)