範例程式碼 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;
}