求一个数的(-2)进制形式。
虽说是-2,本质不还是位运算,穿个马甲我就不认识你了?
#include <cstdio>
using namespace std;
const int N = 105;
char str[N];
int main()
{
#ifdef LOCAL
freopen("in", "r", stdin);
#endif
int T, cur;
str[N] = '\0';
scanf("%d", &T);
for (int cnt = 1; cnt <= T; ++cnt)
{
printf("Case #%d: ", cnt);
scanf("%d", &cur);
if (cur == 0)
{
printf("0\n");
continue;
}
char* ptr = &str[N];
int sgn = 1;
while (cur)
{
if (cur & 1)
{
*(--ptr) = '1';
cur = (cur - sgn) >> 1;
}
else
{
*(--ptr) = '0';
cur = cur >> 1;
}
sgn *= -1;
}
printf("%s\n", ptr);
}
return 0;
}