Dados 3 enteros de cuatro dígitos A , B y C , la tarea es imprimir el número formado tomando el dígito máximo de todos los dígitos en las mismas posiciones en los números dados.
Ejemplos:
Entrada: A = 3521, B = 2452, C = 1352
Salida: 3552
Explicación:
- El máximo de los dígitos que están en el lugar 1 es igual a max(A[3] = 1, B[3] = 2, C[3] = 2) 2 .
- El máximo de los dígitos que están en el décimo lugar es igual a max(A[2] = 2, B[2] = 5, C[2] = 5) 5.
- El máximo de los dígitos que están en el lugar 100 es igual a max(A[1] = 5, B[1] = 4, C[1] = 3) 5 .
- El máximo de los dígitos que están en el lugar 1000 es igual a max(A[0] = 3, B[0] = 3, C[0] = 1) 3.
Por lo tanto, el número formado es 3552.
Entrada: A = 11, B = 12, C = 22
Salida: 22
Enfoque: el problema se puede resolver iterando sobre los dígitos de los enteros dados . Siga los pasos a continuación para resolver el problema:
- Inicialice una variable, digamos ans como 0 y P como 1 para almacenar el número máximo posible y el valor de posición de un dígito.
- Iterar hasta que A, B y C sean mayores que 0 y realizar los siguientes pasos:
- Encuentre los dígitos en los lugares de unidad de los números A, B y C y guárdelos en variables, digamos a, b y c respectivamente.
- Actualice A a A/10 , B a B/10 y C a C/10 .
- Incremente ans por P*max(a, b, c) y luego actualice P a P*10.
- Finalmente, después de completar los pasos anteriores, imprima la respuesta almacenada en ans .
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 find the maximum number // formed by taking the maximum digit // at the same position from each number int findkey(int A, int B, int C) { // Stores the result int ans = 0; // Stores the position value of a // digit int cur = 1; while (A > 0) { // Stores the digit at the unit // place int a = A % 10; // Stores the digit at the unit // place int b = B % 10; // Stores the digit at the unit // place int c = C % 10; // Update A, B and C A = A / 10; B = B / 10; C = C / 10; // Stores the maximum digit int m = max(a, max(c, b)); // Increment ans cur*a ans += cur * m; // Update cur cur = cur * 10; } // Return ans return ans; } // Driver Code int main() { // Given Input int A = 3521, B = 2452, C = 1352; // Function call cout << findkey(A, B, C); return 0; }
Java
// Java program for the above approach public class GFG { // Function to find the maximum number // formed by taking the maximum digit // at the same position from each number static int findkey(int A, int B, int C) { // Stores the result int ans = 0; // Stores the position value of a // digit int cur = 1; while (A > 0) { // Stores the digit at the unit // place int a = A % 10; // Stores the digit at the unit // place int b = B % 10; // Stores the digit at the unit // place int c = C % 10; // Update A, B and C A = A / 10; B = B / 10; C = C / 10; // Stores the maximum digit int m = Math.max(a, Math.max(c, b)); // Increment ans cur*a ans += cur * m; // Update cur cur = cur * 10; } // Return ans return ans; } // Driver Code public static void main(String args[]) { // Given Input int A = 3521, B = 2452, C = 1352; // Function call System.out.println(findkey(A, B, C)); } } // This code is contributed by SoumikMondal
Python3
# Py program for the above approach # Function to find the maximum number # formed by taking the maximum digit # at the same position from each number def findkey(A, B, C): # Stores the result ans = 0 # Stores the position value of a # digit cur = 1 while (A > 0): # Stores the digit at the unit # place a = A % 10 # Stores the digit at the unit # place b = B % 10 # Stores the digit at the unit # place c = C % 10 # Update A, B and C A = A // 10 B = B // 10 C = C // 10 # Stores the maximum digit m = max(a, max(c, b)) # Increment ans cur*a ans += cur * m # Update cur cur = cur * 10 # Return ans return ans # Driver Code if __name__ == '__main__': # Given Input A = 3521 B = 2452 C = 1352 # Function call print (findkey(A, B, C)) # This code is contributed by mohit kumar 29.
C#
// C# program for the above approach using System; class GFG{ // Function to find the maximum number // formed by taking the maximum digit // at the same position from each number static int findkey(int A, int B, int C) { // Stores the result int ans = 0; // Stores the position value of a // digit int cur = 1; while (A > 0) { // Stores the digit at the unit // place int a = A % 10; // Stores the digit at the unit // place int b = B % 10; // Stores the digit at the unit // place int c = C % 10; // Update A, B and C A = A / 10; B = B / 10; C = C / 10; // Stores the maximum digit int m = Math.Max(a, Math.Max(c, b)); // Increment ans cur*a ans += cur * m; // Update cur cur = cur * 10; } // Return ans return ans; } // Driver Code static public void Main () { // Given Input int A = 3521, B = 2452, C = 1352; // Function call Console.Write(findkey(A, B, C)); } } // This code is contributed by sanjoy_62.
Javascript
<script> // JavaScript program for the above approach // Function to find the maximum number // formed by taking the maximum digit // at the same position from each number function findkey(A, B, C) { // Stores the result let ans = 0; // Stores the position value of a // digit let cur = 1; while (A > 0) { // Stores the digit at the unit // place let a = A % 10; // Stores the digit at the unit // place let b = B % 10; // Stores the digit at the unit // place let c = C % 10; // Update A, B and C A = Math.floor(A / 10); B = Math.floor(B / 10); C = Math.floor(C / 10); // Stores the maximum digit let m = Math.max(a, Math.max(c, b)); // Increment ans cur*a ans += cur * m; // Update cur cur = cur * 10; } // Return ans return ans; } // Driver Code // Given Input let A = 3521, B = 2452, C = 1352; // Function call document.write(findkey(A, B, C)); // This code is contributed by Potta Lokesh </script>
Producción
3552
Complejidad de tiempo: O(log(N))
Espacio auxiliar: O(1)