入力文字列 S の長さを N として、文字と文字の間に '+' が入るまたは入らないパターンは全部で 2N-1 通り。2N 通りの全探索で有効なビット全探索を使ってみた。
using System; using System.Collections.Generic; namespace ARC061C { class Program { static void Main(string[] args) { var S = Console.ReadLine(); var bitLength = S.Length - 1; var answer = 0L; for (var bit = 0; bit < (1 << bitLength); bit++) { var buf = new List<char>(); for (var i = 0; i < S.Length; i++) { buf.Add(S[i]); if ((bit & (1 << i)) != 0) { answer += long.Parse(buf.ToArray()); buf = new List<char>(); } } if (buf.Count > 0) { answer += long.Parse(buf.ToArray()); } } Console.WriteLine(answer); } } }