Número máximo formado a partir de los dígitos de tres números dados

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:

  1. 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 .
  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.
  3. 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 .
  4. 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)

Publicación traducida automáticamente

Artículo escrito por harshit17 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *