负进制转换,自己做不会做,以为按照正的一样,发现取模时候会出现负的余数,看别人代码才学会的,对于这种情况具体处理看代码
//============================================================================
// Name : 11121.cpp
// Author :
// Version :
// Copyright : Your copyright notice
// Description : Hello World in C++, Ansi-style
//============================================================================
#include <iostream>
#include <cstdio>
using namespace std;
int N, n, num, T;
int a[100];
int main() {
scanf("%d", &N);
T = 0;
while(N--)
{
T++;
printf("Case #%d: ", T);
scanf("%d", &n);
num = 0;
while(n)
{
a[num] = n%(-2);
n/=(-2);
if(a[num] < 0)
{
a[num] -= (-2);
n++;
}
num++;
}
a[num] = 0;
while(a[num] == 0&&num) num--;
if(num == 0&&a[num] == 0) printf("0\n");
else{
for(int i = num;i >= 0;i--){
printf("%d", a[i]);
}
printf("\n");
}
}
return 0;
}