Given two numbers A and B, the task is to perform BCD Addition of the given numbers.
Examples:
Input: A = 12, B = 20
Output: 110010
Explanation:
The summation of A and B is 12 + 20 = 32.
The binary representation of 3 = 0011
The binary representation of 2 = 0010
Therefore, the BCD Addition is “0011” + “0010” = “110010”Input: A = 10, B = 10
Output:100000
Explanation:
The summation of A and B is 10 + 10 = 20.
The binary representation of 2 = 0010
The binary representation of 0 = 0000
Therefore, the BCD Addition is “0010” + “0000” = “100000”
Approach: The idea is to convert the summation of given two numbers A and B to BCD Number. Below are the steps:
- Find the summation(say num) of the two given numbers A and B.
- For each digit in the number num, convert it into binary representation up to 4 bits.
- Concatenate the binary representation of each digit above and print the result.
Below is the implementation of the above approach:
// C++ program for the above approach #include <bits/stdc++.h> using namespace std;
// Function to perform BCD Addition string BCDAddition( int A, int B)
{ // Store the summation of A and B
// in form of string
string s = to_string(A + B);
int l = s.length();
// To store the final result
string ans;
string str;
// Forming BCD using Bitset
for ( int i = 0; i < l; i++) {
// Find the binary representation
// of the current characters
str = bitset<4>(s[i]).to_string();
ans.append(str);
}
// Stripping off leading zeroes.
const auto loc1 = ans.find( '1' );
// Return string ans
if (loc1 != string::npos) {
return ans.substr(loc1);
}
return "0" ;
} // Driver Code int main()
{ // Given Numbers
int A = 12, B = 20;
// Function Call
cout << BCDAddition(A, B);
return 0;
} |
// Java program for the above approach class GFG{
// Function to perform BCD Addition static String BCDAddition( int A, int B)
{ // Store the summation of A and B
// in form of string
String s = String.valueOf(A + B);
int l = s.length();
// Forming BCD using Bitset
String temp[] = { "0000" , "0001" ,
"0010" , "0011" ,
"0100" , "0101" ,
"0110" , "0111" ,
"1000" , "1001" };
String ans = "" ;
for ( int i = 0 ; i < l; i++)
{
// Find the binary representation
// of the current characters
String t = temp[s.charAt(i) - '0' ];
ans = ans + String.valueOf(t);
}
// Stripping off leading zeroes.
int loc1 = 0 ;
while (loc1 < l && ans.charAt(loc1) != '1' )
{
loc1++;
}
// Return string ans
return ans.substring(loc1);
} // Driver code public static void main(String[] args)
{ // Given Numbers
int A = 12 ;
int B = 20 ;
// Function Call
System.out.println(BCDAddition(A, B));
} } // This code is contributed by divyesh072019 |
# Python3 program for the above approach # Function to perform BCD Addition def BCDAddition(A, B):
# Store the summation of A and B
# in form of string
s = str (A + B)
l = len (s)
# Forming BCD using Bitset
temp = [ "0000" , "0001" , "0010" , "0011" , "0100" ,
"0101" , "0110" , "0111" , "1000" , "1001" ]
ans = ""
for i in range (l):
# Find the binary representation
# of the current characters
t = temp[ ord (s[i]) - ord ( '0' )]
ans = ans + str (t)
# Stripping off leading zeroes.
loc1 = ans.find( '1' )
# Return string ans
return ans[loc1:]
# Driver Code # Given Numbers A = 12
B = 20
# Function Call print (BCDAddition(A, B))
# This code is contributed by grand_master |
// C# program for the above approach using System;
class GFG
{ // Function to perform BCD Addition
static String BCDAddition( int A, int B)
{
// Store the summation of A and B
// in form of string
string s = (A + B).ToString();
int l = s.Length;
// Forming BCD using Bitset
string [] temp = { "0000" , "0001" ,
"0010" , "0011" ,
"0100" , "0101" ,
"0110" , "0111" ,
"1000" , "1001" };
string ans = "" ;
for ( int i = 0; i < l; i++)
{
// Find the binary representation
// of the current characters
string t = temp[s[i] - '0' ];
ans = ans + t.ToString();
}
// Stripping off leading zeroes.
int loc1 = 0;
while (loc1 < l && ans[loc1] != '1' )
{
loc1++;
}
// Return string ans
return ans.Substring(loc1);
}
// Driver code
static void Main()
{
// Given Numbers
int A = 12;
int B = 20;
// Function Call
Console.Write(BCDAddition(A, B));
}
} // This code is contributed by divyeshrbadiya07. |
<script> // Javascript program for the above approach // Function to perform BCD Addition function BCDAddition(A, B)
{ // Store the summation of A and B
// in form of string
var s = (A + B).toString();
var l = s.length;
// Forming BCD using Bitset
temp = [ "0000" , "0001" ,
"0010" , "0011" ,
"0100" , "0101" ,
"0110" , "0111" ,
"1000" , "1001" ]
var ans = "" ;
for ( var i = 0; i < l; i++)
{
// Find the binary representation
// of the current characters
var t = temp[s[i] - '0' ];
ans = ans + t.toString();
}
// Stripping off leading zeroes.
var loc1 = 0;
while (loc1 < l && ans[loc1] != '1' )
{
loc1++;
}
// Return string ans
return ans.substring(loc1);
} // Driver code // Given Numbers var A = 12;
var B = 20;
// Function Call document.write(BCDAddition(A, B)); // This code is contributed by rutvik_56. </script> |
110010
Time Complexity: O(log10(A+B))