範例程式碼 uva11121

//uva11121
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;

int main() {
	int t, n, x, sign;
	vector<int> b1;
	vector<int> b2;

	cin >> t;
	for (int j = 1; j <= t; ++j) {
		cin >> x;
		if (x == 0) {
			cout << "Case #" << j << ": 0\n";
			continue;
		}

		sign = 1;
		if (x < 0) {
			x = -x;
			sign = -1;
		}

		while (x > 0) {
			b1.push_back(x % 2);
			x /= 2;
			b2.push_back(0);
		}
		b2.push_back(0);
		b2.push_back(0);

		n = b1.size();
		for (int i = 0; i < n; ++i) {
			if (sign == 1) {
				if (b1[i] == 1) {
					++b2[i];
					b2[i + 1] += i % 2;
				}
			}
			else {
				if (b1[i] == 1) {
					++b2[i];
					b2[i + 1] += (i + 1) % 2;
				}
			}
		}

		for (int i = 0; i < n; ++i) {
			if (b2[i] == 2) {
				b2[i] = 0;
				if (b2[i + 1] >= 1)
					--b2[i + 1];
				else {
					b2[i + 1] = 1;
					++b2[i + 2];
				}
			}
		}

		while (b2.back() == 0)
			b2.pop_back();
		reverse(b2.begin(), b2.end());
		n = b2.size();

		cout << "Case #" << j << ": ";
		for (int i = 0; i < n; ++i)
			cout << b2[i];
		cout << "\n";

		b1.clear();
		b2.clear();
	}


	return 0;
}