Dados dos números A y B , la tarea es realizar la suma BCD de los números dados.
Ejemplos:
Entrada: A = 12, B = 20
Salida: 110010
Explicación:
La suma de A y B es 12 + 20 = 32.
La representación binaria de 3 = 0011
La representación binaria de 2 = 0010
Por lo tanto, la Suma BCD es “0011” + “0010” = “110010”Entrada: A = 10, B = 10
Salida: 100000
Explicación:
La suma de A y B es 10 + 10 = 20.
La representación binaria de 2 = 0010
La representación binaria de 0 = 0000
Por lo tanto, la Suma BCD es “0010” + “0000” = “100000”
Enfoque: La idea es convertir la suma de dos números A y B dados en un número BCD. A continuación se muestran los pasos:
- Encuentre la suma (digamos num ) de los dos números dados A y B.
- Para cada dígito en el número num , conviértalo en representación binaria hasta 4 bits .
- Concatene la representación binaria de cada dígito anterior e imprima el resultado.
A continuación se muestra la implementación del enfoque anterior:
C++
// 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
// 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
# 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#
// 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.
Javascript
<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
Complejidad de tiempo: O(log 10 (A+B))
Publicación traducida automáticamente
Artículo escrito por yashbeersingh42 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA