#include <cstdio>
template <typename number> char * tobinary(number x, char *buf)
{
number q;
char *p=buf;
if((number)~0<0)
{
*(p++) = '0' + (x<0);
q = (number)1 << ((sizeof(number)<<3) - 2);
}
else
q = (number)1 << ((sizeof(number)<<3) - 1);
for(; q; q>>=1)
*(p++) = x & q ? '1' : '0';
*p = 0;
return buf;
}
#define POSVAL 7
#define NEGVAL -7
int main(void)
{
char temp[128];
#define TEST(type,val) do { type x=val; puts(tobinary(x, temp)); } while(0)
TEST(char, POSVAL);
TEST(unsigned char, POSVAL);
TEST(signed char, POSVAL);
TEST(unsigned short, POSVAL);
TEST(signed short, POSVAL);
TEST(unsigned, POSVAL);
TEST(signed, POSVAL);
TEST(unsigned long, POSVAL);
TEST(signed long, POSVAL);
TEST(unsigned long long, POSVAL);
TEST(signed long long, POSVAL);
TEST(char, NEGVAL);
TEST(unsigned char, NEGVAL);
TEST(signed char, NEGVAL);
TEST(unsigned short, NEGVAL);
TEST(signed short, NEGVAL);
TEST(unsigned, NEGVAL);
TEST(signed, NEGVAL);
TEST(unsigned long, NEGVAL);
TEST(signed long, NEGVAL);
TEST(unsigned long long, NEGVAL);
TEST(signed long long, NEGVAL);
#undef TEST
getchar();
return 0;
}
I2luY2x1ZGUgPGNzdGRpbz4KCnRlbXBsYXRlIDx0eXBlbmFtZSBudW1iZXI+IGNoYXIgKiB0b2JpbmFyeShudW1iZXIgeCwgY2hhciAqYnVmKQp7CiAgICBudW1iZXIgcTsKICAgIGNoYXIgKnA9YnVmOwoKICAgIGlmKChudW1iZXIpfjA8MCkKICAgIHsKICAgICAgICAqKHArKykgPSAnMCcgKyAoeDwwKTsKICAgICAgICBxID0gKG51bWJlcikxIDw8ICgoc2l6ZW9mKG51bWJlcik8PDMpIC0gMik7CiAgICB9CiAgICBlbHNlCiAgICAgICAgcSA9IChudW1iZXIpMSA8PCAoKHNpemVvZihudW1iZXIpPDwzKSAtIDEpOwoKICAgIGZvcig7IHE7IHE+Pj0xKQogICAgICAgICoocCsrKSA9IHggJiBxID8gJzEnIDogJzAnOwoKICAgICpwID0gMDsKCiAgICByZXR1cm4gYnVmOwp9CgojZGVmaW5lIFBPU1ZBTCA3CiNkZWZpbmUgTkVHVkFMIC03CgppbnQgbWFpbih2b2lkKQp7CiAgICBjaGFyIHRlbXBbMTI4XTsKCiAgICAjZGVmaW5lIFRFU1QodHlwZSx2YWwpIGRvIHsgdHlwZSB4PXZhbDsgcHV0cyh0b2JpbmFyeSh4LCB0ZW1wKSk7IH0gd2hpbGUoMCkKCiAgICBURVNUKGNoYXIsIFBPU1ZBTCk7CiAgICBURVNUKHVuc2lnbmVkIGNoYXIsIFBPU1ZBTCk7CiAgICBURVNUKHNpZ25lZCBjaGFyLCBQT1NWQUwpOwoKICAgIFRFU1QodW5zaWduZWQgc2hvcnQsIFBPU1ZBTCk7CiAgICBURVNUKHNpZ25lZCBzaG9ydCwgUE9TVkFMKTsKCiAgICBURVNUKHVuc2lnbmVkLCBQT1NWQUwpOwogICAgVEVTVChzaWduZWQsIFBPU1ZBTCk7CgogICAgVEVTVCh1bnNpZ25lZCBsb25nLCBQT1NWQUwpOwogICAgVEVTVChzaWduZWQgbG9uZywgUE9TVkFMKTsKCiAgICBURVNUKHVuc2lnbmVkIGxvbmcgbG9uZywgUE9TVkFMKTsKICAgIFRFU1Qoc2lnbmVkIGxvbmcgbG9uZywgUE9TVkFMKTsKCiAgICBURVNUKGNoYXIsIE5FR1ZBTCk7CiAgICBURVNUKHVuc2lnbmVkIGNoYXIsIE5FR1ZBTCk7CiAgICBURVNUKHNpZ25lZCBjaGFyLCBORUdWQUwpOwoKICAgIFRFU1QodW5zaWduZWQgc2hvcnQsIE5FR1ZBTCk7CiAgICBURVNUKHNpZ25lZCBzaG9ydCwgTkVHVkFMKTsKCiAgICBURVNUKHVuc2lnbmVkLCBORUdWQUwpOwogICAgVEVTVChzaWduZWQsIE5FR1ZBTCk7CgogICAgVEVTVCh1bnNpZ25lZCBsb25nLCBORUdWQUwpOwogICAgVEVTVChzaWduZWQgbG9uZywgTkVHVkFMKTsKCiAgICBURVNUKHVuc2lnbmVkIGxvbmcgbG9uZywgTkVHVkFMKTsKICAgIFRFU1Qoc2lnbmVkIGxvbmcgbG9uZywgTkVHVkFMKTsKCiAgICAjdW5kZWYgVEVTVAoKICAgIGdldGNoYXIoKTsKCiAgICByZXR1cm4gMDsKfQ==