Description
Inexperienced in the digital arts, the cows tried to build a calculating engine (yes, it ' s a cowmpouter) using binary numb ERS (base 2) but instead built one based on base negative 2! They were quite pleased since numbers expressed in base−2 doing not has a sign bit.
You know number bases has place values as start at 1 (base to the 0 power) and proceed right-to-left to Base^1, base^2, And so on. In base−2, the place values is 1,−2, 4,−8, 16,−32, ... (reading from right to left). Thus, counting from 1 goes like This:1, A, 111, a, 101, 11010, 11011, 11000, 11001, and so on.
Eerily, negative numbers is also represented with 1 ' s and 0 's but no sign. Consider counting from−1 Downward:11, ten, 1101, 1100, 1111, and so on.
Cows convert ordinary decimal integers (range-2,000,000,000..2,000,000,000) to their counterpart Represen Tation in base−2.
Input
Line 1: A single integer to being converted to base−2
Output
Line 1: A single integer with no leading zeroes this is the input integer converted to base−2. The value 0 is expressed as 0 and with exactly one 0.
Sample Input
-13
Sample Output
110111
Hint
Explanation of the sample:
Reading from Right-to-left:
1*1 + 1*-2 + 1*4 + 0*-8 +1*16 + 1*-32 =-13
Note: Arbitrary negative input is also the case
#include <cstdio> #include <stack> #include <cstring> #include <algorithm>using namespace std; typedef long Long Ll;ll Read ()//input plug-in {ll x=0,f=1;char Ch=getchar (); while (ch< ' 0 ' | | Ch> ' 9 ') {if (ch== '-') F=-1;ch=getchar ();} while (ch>= ' 0 ' &&ch<= ' 9 ') {x=x*10+ch-' 0 '; Ch=getchar ();} return x*f;} int main () { int n,i; N=read (); stack<int>s; if (!n) {printf ("0\n"); return 0;} 0 requires a special sentence while (n) {for (i=0;; ++i) if ((n-i)%2==0) break; S.push (i); n= (n-i)/( -2); } while (!s.empty ()) { printf ("%d", s.top ()); S.pop ();} printf ("\ n");}
A-the moronic Cowmpouter