- #include <stdio.h> 
- #include <string.h> 
-   
- void MulBytesBy10(unsigned char* buf, size_t cnt) 
- { 
-   unsigned carry = 0; 
-   while (cnt--) 
-   { 
-     carry += 10 * *buf; 
-     *buf++ = carry & 0xFF; 
-     carry >>= 8; 
-   } 
- } 
-   
- void AddDigitToBytes(unsigned char* buf, size_t cnt, unsigned char digit) 
- { 
-   unsigned carry = digit; 
-   while (cnt-- && carry) 
-   { 
-     carry += *buf; 
-     *buf++ = carry & 0xFF; 
-     carry >>= 8; 
-   } 
- } 
-   
- void DecimalIntegerStringToBytes(unsigned char* buf, size_t cnt, const char* str) 
- { 
-   
-   while (*str != '\0') 
-   { 
-     MulBytesBy10(buf, cnt); 
-     AddDigitToBytes(buf, cnt, *str++ - '0'); 
-   } 
- } 
-   
- void PrintBytesHex(const unsigned char* buf, size_t cnt) 
- { 
-   size_t i; 
-   for (i = 0; i < cnt; i++) 
-     printf("%02X",-  buf [- cnt  - 1 --  i ]);
 
- } 
-   
- int main(void) 
- { 
-   unsigned char buf[16]; 
-   
-   DecimalIntegerStringToBytes(buf, sizeof buf, "11234567890123456789112345678911"); 
-   
-   PrintBytesHex (- buf , sizeof-  buf ); puts("");
-   
-   return 0; 
- } 
-   
				I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdHJpbmcuaD4KCnZvaWQgTXVsQnl0ZXNCeTEwKHVuc2lnbmVkIGNoYXIqIGJ1Ziwgc2l6ZV90IGNudCkKewogIHVuc2lnbmVkIGNhcnJ5ID0gMDsKICB3aGlsZSAoY250LS0pCiAgewogICAgY2FycnkgKz0gMTAgKiAqYnVmOwogICAgKmJ1ZisrID0gY2FycnkgJiAweEZGOwogICAgY2FycnkgPj49IDg7CiAgfQp9Cgp2b2lkIEFkZERpZ2l0VG9CeXRlcyh1bnNpZ25lZCBjaGFyKiBidWYsIHNpemVfdCBjbnQsIHVuc2lnbmVkIGNoYXIgZGlnaXQpCnsKICB1bnNpZ25lZCBjYXJyeSA9IGRpZ2l0OwogIHdoaWxlIChjbnQtLSAmJiBjYXJyeSkKICB7CiAgICBjYXJyeSArPSAqYnVmOwogICAgKmJ1ZisrID0gY2FycnkgJiAweEZGOwogICAgY2FycnkgPj49IDg7CiAgfQp9Cgp2b2lkIERlY2ltYWxJbnRlZ2VyU3RyaW5nVG9CeXRlcyh1bnNpZ25lZCBjaGFyKiBidWYsIHNpemVfdCBjbnQsIGNvbnN0IGNoYXIqIHN0cikKewogIG1lbXNldChidWYsIDAsIGNudCk7CgogIHdoaWxlICgqc3RyICE9ICdcMCcpCiAgewogICAgTXVsQnl0ZXNCeTEwKGJ1ZiwgY250KTsKICAgIEFkZERpZ2l0VG9CeXRlcyhidWYsIGNudCwgKnN0cisrIC0gJzAnKTsKICB9Cn0KCnZvaWQgUHJpbnRCeXRlc0hleChjb25zdCB1bnNpZ25lZCBjaGFyKiBidWYsIHNpemVfdCBjbnQpCnsKICBzaXplX3QgaTsKICBmb3IgKGkgPSAwOyBpIDwgY250OyBpKyspCiAgICBwcmludGYoIiUwMlgiLCBidWZbY250IC0gMSAtIGldKTsKfQoKaW50IG1haW4odm9pZCkKewogIHVuc2lnbmVkIGNoYXIgYnVmWzE2XTsKCiAgRGVjaW1hbEludGVnZXJTdHJpbmdUb0J5dGVzKGJ1Ziwgc2l6ZW9mIGJ1ZiwgIjExMjM0NTY3ODkwMTIzNDU2Nzg5MTEyMzQ1Njc4OTExIik7CgogIFByaW50Qnl0ZXNIZXgoYnVmLCBzaXplb2YgYnVmKTsgcHV0cygiIik7CgogIHJldHVybiAwOwp9Cg==