11121

负进制转换,自己做不会做,以为按照正的一样,发现取模时候会出现负的余数,看别人代码才学会的,对于这种情况具体处理看代码
//============================================================================
// 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;
}
posted @ 2011-05-23 21:53  KOKO's  阅读(191)  评论(0编辑  收藏  举报