#include<stdio.h>
/**
* My custom recursive function to calculate power of two
*/
unsigned int twoPow(unsigned int n){
if(n == 0)
return 1;
/**
* this is our recursive counter we need to decrease it otherwise it will go to infinite loop
*/
n--;
/**
* simply keep multiplying 2 given times to get power of two
*/
return 2 * twoPow(n);
}
int main(){
char s[32];
unsigned int i,j,sum; /* here i used unsigned since none of our input or outputs are negative */
/*
* check if its 0 then exit, Maybe even deleting the NULL check will work for this problem
*/
if(s[0] == '0' && s[1] == '\0')
return 0;
sum = 0;
/**
* get the string length
*/
for(i = 0; s[i]; ++i);
for(j = 0; s[j]; ++j)
/**
* convert character to integer, then multiply 2 to the power n, then subtract 1 and add to sum
*/
sum = sum + (s[j] - 48) * (twoPow(i - j) - 1);
}
return 0;
}
I2luY2x1ZGU8c3RkaW8uaD4KIAovKioKICogTXkgY3VzdG9tIHJlY3Vyc2l2ZSBmdW5jdGlvbiB0byBjYWxjdWxhdGUgcG93ZXIgb2YgdHdvCiAqLwp1bnNpZ25lZCBpbnQgdHdvUG93KHVuc2lnbmVkIGludCBuKXsgICAgCiAgICBpZihuID09IDApCiAgICAgICAgcmV0dXJuIDE7CiAKICAgIC8qKgogICAgICogdGhpcyBpcyBvdXIgcmVjdXJzaXZlIGNvdW50ZXIgd2UgbmVlZCB0byBkZWNyZWFzZSBpdCBvdGhlcndpc2UgaXQgd2lsbCBnbyB0byBpbmZpbml0ZSBsb29wCiAgICAgKi8KICAgIG4tLTsgICAgCiAKICAgIC8qKgogICAgICogc2ltcGx5IGtlZXAgbXVsdGlwbHlpbmcgMiBnaXZlbiB0aW1lcyB0byBnZXQgcG93ZXIgb2YgdHdvCiAgICAgKi8KICAgIHJldHVybiAyICogdHdvUG93KG4pOyAKfQogCmludCBtYWluKCl7CiAgICBjaGFyIHNbMzJdOwogICAgdW5zaWduZWQgaW50IGksaixzdW07ICAgLyogaGVyZSBpIHVzZWQgdW5zaWduZWQgc2luY2Ugbm9uZSBvZiBvdXIgaW5wdXQgb3Igb3V0cHV0cyBhcmUgbmVnYXRpdmUgKi8KICAgICAKICAgIHdoaWxlIChnZXRzKHMpKXsKICAgICAgICAvKgogICAgICAgICAqIGNoZWNrIGlmIGl0cyAwIHRoZW4gZXhpdCwgTWF5YmUgZXZlbiBkZWxldGluZyB0aGUgTlVMTCBjaGVjayB3aWxsIHdvcmsgZm9yIHRoaXMgcHJvYmxlbQogICAgICAgICAqLwogICAgICAgIGlmKHNbMF0gPT0gJzAnICYmIHNbMV0gPT0gJ1wwJykgICAgCiAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICAKICAgICAgICBzdW0gPSAwOwogCiAgICAgICAgLyoqCiAgICAgICAgICogZ2V0IHRoZSBzdHJpbmcgbGVuZ3RoCiAgICAgICAgICovCiAgICAgICAgZm9yKGkgPSAwOyBzW2ldOyArK2kpOyAgCiAgICAgICAgIAogICAgICAgIGZvcihqID0gMDsgc1tqXTsgKytqKQogICAgICAgIC8qKgogICAgICAgICAqIGNvbnZlcnQgY2hhcmFjdGVyIHRvIGludGVnZXIsIHRoZW4gbXVsdGlwbHkgMiB0byB0aGUgcG93ZXIgbiwgdGhlbiBzdWJ0cmFjdCAxIGFuZCBhZGQgdG8gc3VtCiAgICAgICAgICovCiAgICAgICAgICAgIHN1bSA9IHN1bSArIChzW2pdIC0gNDgpICogKHR3b1BvdyhpIC0gaikgLSAxKTsgIAogICAgICAgICAKICAgICAgICBwcmludGYoIiV1XG4iLCBzdW0pOwogICAgfQogICAgcmV0dXJuIDA7Cn0=