#include <stdio.h>                                                                      
#include <stdlib.h>                                                                     
#include <string.h>                                                                     
#include <math.h>                                                                       
#include <ctype.h>                                                                      
                                                                                        
#define PROC(a) ((a < 2) ? 0 : a - 1)                                                   
                                                                                        
int main(void)                                                                          
{                                                                                       
        long long org, i, j, k, a = 1, tmp, tmp2, list[10], len = 10, ans = 0;          
                                                                                        
        scanf("%lld", &org);                                                            
                                                                                        
        for (i = 1; i < 10; i++) {                                                      
                a *= 10;                                                                
                if (org < a) {                                                          
                        len = i;                                                        
                        break;                                                          
                }                                                                       
        }                                                                               
                                                                                        
        for (i = 0; i < len; i++) {                                                     
                a = pow(10, len - i - 1);                                               
                list[i] = org / a;                                                      
                org %= a;                                                                
        }                                                                               
                                                                                        
        for (i = 0; i < len; i++) {                                                     
                for (j = 0; j < len - i; j++) {                                         
                        for (k = 0, tmp = 0; k <= i; k++) {                             
                                tmp += list[j + k] * pow(10, i - k);                    
                        }                                                               
                        tmp2 = pow(2, PROC(j) + PROC(len - 1 - i - j));                 
                        ans += tmp * tmp2;                                              
                }                                                                       
        }                                                                               
        printf("%lld\n", ans);                                                          
        return 0;                                                                       
}

Measured memory_bytes: 128