197AC - ABC045C: Many Formulas

ABC045-C (300 points)
問題

 '1' 以上  '9' 以下の数字のみからなる文字列  S が与えられ, この文字列の中に  '+' を挿入して数式を作り, 和を計算すること考える.
ありうる全ての数式の値を計算し, その合計を求める.

  •  1 \leq |S| \leq 10
  •  S に含まれる文字は全て  '1' ~  '9' の数字
方針

 S_i 10^{k} の位になる場合を考える.

  • 部分列  S_1, \ldots, S_i '+' を入れる場合の数は  2^{i - 1} 通り.
  • 部分列  S_i, \ldots, S_{i + k} には  '+' は入らない.
  • 部分列  S_{i + k}, \ldots, S_N '+' を入れる場合の数は  2^{N - i - k} 通り.
# input
l = [int(x) for x in list(input())]

N = len(l)
ans = 0

for i in range(N):
    for k in range(N - i - 1):
        ans += (2 ** i) * (2 ** (N - i - k - 2)) * (10 ** k) * l[i]
    ans += (2 ** i) * (10 ** (N - i - 1)) * l[i]

print(ans)