[UVA] 11121 - Base -2
Problem D
Base -2
Input: Standard Input
Output: Standard Output
The creator of the universe
works in mysterious ways. But |
Scott Adams
Everyone knows about base-2
(binary) integers and base-10 (decimal) integers, but what about base -2?
An integer n written in base -2 is a sequence of digits
n = b0 + b1(-2) + b2(-2)2 + b3(-2)3 + ...
The cool thing is that every integer (including the negative ones) has a unique base--2 representation, with no minus sign required. Your task is to find this representation.
Input
The first line of input gives the number of cases, N (at most
10000). N test cases follow. Each one is a line containing a decimal
integer in the range from
Output
For each test case, output one line containing "Case #x:"
followed by the same integer, written in base -2 with no leading zeros.
Sample Input Output for Sample Input
4 1 7 -2 0 |
Case #1: 1 Case #2: 11011 Case #3: 10
Case #4: 0 |
作法 : 遞迴
#include<stdio.h>
#include<stdlib.h>
void Base_2(int n) {
if(n > 0) {
Base_2(n/(-2));
printf("%d", n%2);
}
if(n < 0) {
Base_2(n/(-2)+(n%(-2) != 0));
printf("%d", abs(n%(-2)));
}
}
int main() {
int t, C = 0, n;
scanf("%d", &t);
while(t--) {
scanf("%d", &n);
printf("Case #%d: ", ++C);
if(n == 0) puts("0");
else Base_2(n), puts("");
}
return 0;
}
想請問一下這題的想法是怎麼樣的?
我看不太懂@@
想請問的是7怎麼換算成-2進位?
一直消去最後一個 bit 2012-01-12 17:27:59