#include <stdio.h>
 
void outputAsDecimal(char *binary)
{
   char digits[200]; // arbitrary size for now
 
   for (int i=0; i< 200; ++i)
     digits[i] = 0;
 
   while (*binary != 0)
   {
 
   // shift the digits, with carry
     int carry = 0;
 
     for (int i = 0; i< 200; ++i)
     {
       int d = digits[i] *2 + carry;
       carry = d > 9;
       digits[i] = d % 10;
     }
 
   // or in the new bit
     if (*binary++ == '1') 
       digits[0] |= 1;
   }
 
    // output with leading zeroes!
    for (int i = 199; i >=0; --i)
    {
      putchar(digits[i] + '0'); // convert to ascii
    }
}
 
int main()
{
    outputAsDecimal("11111111111111111111111111111111111111111111111111111111111111111");
}
				I2luY2x1ZGUgPHN0ZGlvLmg+Cgp2b2lkIG91dHB1dEFzRGVjaW1hbChjaGFyICpiaW5hcnkpCnsKICAgY2hhciBkaWdpdHNbMjAwXTsgLy8gYXJiaXRyYXJ5IHNpemUgZm9yIG5vdwogCiAgIGZvciAoaW50IGk9MDsgaTwgMjAwOyArK2kpCiAgICAgZGlnaXRzW2ldID0gMDsKIAogICB3aGlsZSAoKmJpbmFyeSAhPSAwKQogICB7CiAKICAgLy8gc2hpZnQgdGhlIGRpZ2l0cywgd2l0aCBjYXJyeQogICAgIGludCBjYXJyeSA9IDA7CiAKICAgICBmb3IgKGludCBpID0gMDsgaTwgMjAwOyArK2kpCiAgICAgewogICAgICAgaW50IGQgPSBkaWdpdHNbaV0gKjIgKyBjYXJyeTsKICAgICAgIGNhcnJ5ID0gZCA+IDk7CiAgICAgICBkaWdpdHNbaV0gPSBkICUgMTA7CiAgICAgfQogCiAgIC8vIG9yIGluIHRoZSBuZXcgYml0CiAgICAgaWYgKCpiaW5hcnkrKyA9PSAnMScpIAogICAgICAgZGlnaXRzWzBdIHw9IDE7CiAgIH0KIAogICAgLy8gb3V0cHV0IHdpdGggbGVhZGluZyB6ZXJvZXMhCiAgICBmb3IgKGludCBpID0gMTk5OyBpID49MDsgLS1pKQogICAgewogICAgICBwdXRjaGFyKGRpZ2l0c1tpXSArICcwJyk7IC8vIGNvbnZlcnQgdG8gYXNjaWkKICAgIH0KfQogCmludCBtYWluKCkKewogICAgb3V0cHV0QXNEZWNpbWFsKCIxMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMSIpOwp9