Given an integer N, the task is to find base -2 representation of the number N in the form of a string, such that S0 * (- 2)0 + S1 * (- 2)1 + … + Sk * (- 2)k = N. The string should only consist of 0s and 1s and unless the string is equal to zero, the initial character should be 1.
Examples:
Input: N = -9
Output: 1011
Explanation: 1011 is -2 representation of -9
(-2)0+ (-2)1+ (-2)3 = 1+ (-2) + (-8) = -9Input: N = -7
Output: 1001
Approach: Follow the steps below to solve the problem:
- Initialize an empty string S.
- Iterate from N, until N is greater than zero.
- If N is even, append ‘0‘ in front of S and divide N by -2.
- Otherwise, append ‘1‘ in front of S, and decrement N by 1, and then divide N by -2.
- If the string S is empty, then return ‘0‘
- Finally, return the string S.
Below is the implementation of the above approach:
// C++ Program for above approach #include <bits/stdc++.h> using namespace std;
// Function to convert N to // equivalent representation in base -2 string BaseConversion( int N)
{ // Stores the required answer
string s = "" ;
// Iterate until N is
// not equal to zero
while (N != 0) {
// If N is Even
if (N % 2 == 0) {
// Add char '0' in
// front of string
s = "0" + s;
}
else {
// Add char '1' in
// front of string
s = "1" + s;
// Decrement N by 1
N--;
}
// Divide N by -2
N /= -2;
}
// If string is empty,
// that means N is zero
if (s == "" ) {
// Put '0' in string s
s = "0" ;
}
return s;
} // Driver Code int main()
{ // Given Input
int N = -9;
// Function Call
cout << BaseConversion(N);
return 0;
} |
// Java Program for above approach class GFG {
// Function to convert N to
// equivalent representation in base -2
public static String BaseConversion( int N) {
// Stores the required answer
String s = "" ;
// Iterate until N is
// not equal to zero
while (N != 0 ) {
// If N is Even
if (N % 2 == 0 ) {
// Add char '0' in
// front of string
s = "0" + s;
} else {
// Add char '1' in
// front of string
s = "1" + s;
// Decrement N by 1
N--;
}
// Divide N by -2
N /= - 2 ;
}
// If string is empty,
// that means N is zero
if (s == "" ) {
// Put '0' in string s
s = "0" ;
}
return s;
}
// Driver Code
public static void main(String args[]) {
// Given Input
int N = - 9 ;
// Function Call
System.out.println(BaseConversion(N));
}
} // This code is contributed by _saurabh_jaiswal. |
# Python Program for the above approach # Function to convert N to # equivalent representation in base -2 def BaseConversion(N):
# Stores the required answer
s = ""
# Iterate until N is
# not equal to zero
while (N ! = 0 ):
# If N is Even
if (N % 2 = = 0 ):
# Add char '0' in
# front of string
s = "0" + s
else :
# Add char '1' in
# front of string
s = "1" + s
# Decrement N by 1
N - = 1
# Divide N by -2
N / = - 2
# If string is empty,
# that means N is zero
if (s = = ""):
# Put '0' in string s
s = "0"
return s
# Driver Code # Given Input N = - 9
# Function Call print (BaseConversion(N))
# This code is contributed by _saurabh_jaiswal |
// C# Program for above approach using System;
using System.Collections.Generic;
class GFG{
// Function to convert N to // equivalent representation in base -2 static string BaseConversion( int N)
{ // Stores the required answer
string s = "" ;
// Iterate until N is
// not equal to zero
while (N != 0) {
// If N is Even
if (N % 2 == 0) {
// Add char '0' in
// front of string
s = "0" + s;
}
else {
// Add char '1' in
// front of string
s = "1" + s;
// Decrement N by 1
N--;
}
// Divide N by -2
N /= -2;
}
// If string is empty,
// that means N is zero
if (s == "" ) {
// Put '0' in string s
s = "0" ;
}
return s;
} // Driver Code public static void Main()
{ // Given Input
int N = -9;
// Function Call
Console.Write(BaseConversion(N));
} } // This code is contributed by bgangwar59. |
<script> // JavaScript Program for the above approach
// Function to convert N to
// equivalent representation in base -2
function BaseConversion(N)
{
// Stores the required answer
let s = "" ;
// Iterate until N is
// not equal to zero
while (N != 0) {
// If N is Even
if (N % 2 == 0) {
// Add char '0' in
// front of string
s = "0" + s;
}
else {
// Add char '1' in
// front of string
s = "1" + s;
// Decrement N by 1
N--;
}
// Divide N by -2
N /= -2;
}
// If string is empty,
// that means N is zero
if (s == "" ) {
// Put '0' in string s
s = "0" ;
}
return s;
}
// Driver Code
// Given Input
let N = -9;
// Function Call
document.write(BaseConversion(N));
// This code is contributed by Potta Lokesh
</script>
|
1011
Time Complexity: O(N)
Auxiliary Space: O(1)