#[Pyth](https://pyth.readthedocs.io), <s>20</s> 19 bytes My current prefix approach (will hopefully golf further), will add an explanation soon: +*tlQsQssM+_M.__Q._ **[Test Suite.](http://pyth.herokuapp.com/?code=%2B%2atlQsQssM%2B_M.__Q._&input=%22123%22&test_suite=1&test_suite_input=%2212%22%0A%22101%22%0A%22123%22%0A%221234567%22&debug=0)** I am confident that `_M.__Q` is golfable, working on a solution. ------ #[Pyth](https://pyth.readthedocs.io), 20 bytes +*hlQsQsm+s>Qds<QdtU **[Test Suite.](http://pyth.herokuapp.com/?code=%2B%2ahlQsQsm%2Bs%3EQds%3CQdtU&input=%22123%22&test_suite=1&test_suite_input=%221234567%22%0A%22123%22%0A%22101%22%0A%2212%22&debug=0)** #Explanation <s>Explanation to come after further golfing.</s> I didn't succeed to golf this further for now (I have ideas though). +*hlQsQsm+s>Qds<QdtUQ - Full program. Reads from STDIN. Q means input, and is implicit at the end. hlQ - Length of the input + 1. sQ - The input converted to an integer. * - Multiply the above. We'll call the result P. m tUQ - Map over [1...length of the input) s>Qd - input[currentItem:] casted to an integer. s<Qd - input[:currentItem] casted to an integer. + - Sum the above. s - Sum the list. + - Add the sum of the list and P.