#include <iostream>
#include <math.h>
char *int2str(int input)
{
if (input == 0)
return "0";
bool negative = false;
if (input < 0)
{
input = abs(input);
negative = true;
}
int digits = log10(input) + 1;
char *output = new char[digits + (negative ? 2 : 1)];
char *current_char = output;
if (negative)
{
output[0] = '-';
current_char++;
}
int current_num = input;
for (int current_digit = digits - 1; current_digit >= 0; current_digit--)
{
int p = pow(10, current_digit);
int d = current_num / p;
current_num -= p * d;
*current_char = '0' + d;
current_char++;
}
*current_char = '\0';
return output;
}
int main()
{
printf("%s\n%s\n%s", int2str(-999), int2str(54321), int2str(0));
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8bWF0aC5oPgoKY2hhciAqaW50MnN0cihpbnQgaW5wdXQpCnsKCWlmIChpbnB1dCA9PSAwKQoJCXJldHVybiAiMCI7Cglib29sIG5lZ2F0aXZlID0gZmFsc2U7CglpZiAoaW5wdXQgPCAwKQoJewoJCWlucHV0ID0gYWJzKGlucHV0KTsKCQluZWdhdGl2ZSA9IHRydWU7Cgl9CglpbnQgZGlnaXRzID0gbG9nMTAoaW5wdXQpICsgMTsKCWNoYXIgKm91dHB1dCA9IG5ldyBjaGFyW2RpZ2l0cyArIChuZWdhdGl2ZSA/IDIgOiAxKV07CgljaGFyICpjdXJyZW50X2NoYXIgPSBvdXRwdXQ7CglpZiAobmVnYXRpdmUpCgl7CgkJb3V0cHV0WzBdID0gJy0nOwoJCWN1cnJlbnRfY2hhcisrOwoJfQoJaW50IGN1cnJlbnRfbnVtID0gaW5wdXQ7Cglmb3IgKGludCBjdXJyZW50X2RpZ2l0ID0gZGlnaXRzIC0gMTsgY3VycmVudF9kaWdpdCA+PSAwOyBjdXJyZW50X2RpZ2l0LS0pCgl7CgkJaW50IHAgPSBwb3coMTAsIGN1cnJlbnRfZGlnaXQpOwoJCWludCBkID0gY3VycmVudF9udW0gLyBwOwoJCWN1cnJlbnRfbnVtIC09IHAgKiBkOwoJCSpjdXJyZW50X2NoYXIgPSAnMCcgKyBkOwoJCWN1cnJlbnRfY2hhcisrOwoJfQoJKmN1cnJlbnRfY2hhciA9ICdcMCc7CglyZXR1cm4gb3V0cHV0Owp9CgppbnQgbWFpbigpCnsKCXByaW50ZigiJXNcbiVzXG4lcyIsIGludDJzdHIoLTk5OSksIGludDJzdHIoNTQzMjEpLCBpbnQyc3RyKDApKTsKCXJldHVybiAwOwp9