Comprobar si la suma de dígitos distintos de dos enteros es igual

Dados dos enteros m y n , la tarea es encontrar la suma de dígitos distintos de ambos números e imprimir si ambas sumas son iguales, de lo contrario, imprimir NO .
Ejemplos: 
 

Entrada: m = 2452, n = 9222 
Salida: SI 
La suma de dígitos distintos de 2452 es 11 (2 + 4 + 5) 
Y de 9222 es 11 (9 + 2)
Entrada: m = 121, n = 3035 
Salida: NO 
 

Enfoque: Encuentre la suma de dígitos únicos de m y n y guárdelos en sumM y sumN respectivamente. Si sumM = sumN , imprima ; de lo contrario, imprima NO .
A continuación se muestra la implementación del enfoque anterior:
 

C++

// C++ program to check if the sum of distinct
// digits of two integers are equal
 
#include <iostream>
using namespace std;
 
    // Function to return the sum of
    // distinct digits of a number
     int distinctDigitSum(int n)
    {
        bool used[10];
        int sum = 0;
        while (n > 0) {
 
            // Take last digit
            int digit = n % 10;
 
            // If digit has not been used before
            if (!used[digit]) {
 
                // Set digit as used
                used[digit] = true;
                sum += digit;
            }
 
            // Remove last digit
            n = (int)n / 10;
        }
 
        return sum;
    }
 
    // Function to check whether the sum of
    // distinct digits of two numbers are equal
     string checkSum(int m, int n)
    {
        int sumM = distinctDigitSum(m);
        int sumN = distinctDigitSum(n);
 
        if (sumM != sumN)
            return "YES";
        return "NO";
    }
 
    // Driver code
    int main() {
 
        int m = 2452, n = 9222;
        cout << (checkSum(m, n));
        return 0;
}

Java

// Java program to check if the sum of distinct
// digits of two integers are equal
public class HelloWorld {
 
    // Function to return the sum of
    // distinct digits of a number
    static int distinctDigitSum(int n)
    {
        boolean used[] = new boolean[10];
        int sum = 0;
        while (n > 0) {
 
            // Take last digit
            int digit = n % 10;
 
            // If digit has not been used before
            if (!used[digit]) {
 
                // Set digit as used
                used[digit] = true;
                sum += digit;
            }
 
            // Remove last digit
            n = n / 10;
        }
 
        return sum;
    }
 
    // Function to check whether the sum of
    // distinct digits of two numbers are equal
    static String checkSum(int m, int n)
    {
        int sumM = distinctDigitSum(m);
        int sumN = distinctDigitSum(n);
 
        if (sumM == sumN)
            return "YES";
        return "NO";
    }
 
    // Driver code
    public static void main(String[] args)
    {
        int m = 2452, n = 9222;
        System.out.println(checkSum(m, n));
    }
}

Python3

# Python3 program to check if the sum of
# distinct digits of two integers are equal
 
# Function to return the sum of
# distinct digits of a number
def distinctDigitSum(n) :
     
    used = [False] * 10
    sum = 0
    while (n > 0) :
 
        # Take last digit
        digit = n % 10
         
        # If digit has not been used before
        if (not used[digit]) :
 
            # Set digit as used
            used[digit] = True
            sum += digit
             
        # Remove last digit
        n = n // 10
         
    return sum
     
# Function to check whether the sum of
# distinct digits of two numbers are equal
def checkSum(m, n) :
     
    sumM = distinctDigitSum(m)
    sumN = distinctDigitSum(n)
     
    if (sumM == sumN) :
        return "YES"
    return "NO"
     
# Driver code
if __name__ == "__main__" :
 
    m = 2452
    n = 9222
     
    print(checkSum(m, n))
     
# This code is contributed by Ryuga

C#

// C# program to check if the sum of distinct
// digits of two integers are equal
 
 
// Function to return the sum of
// distinct digits of a number
 
using System;
 
public class GFG{
        static int distinctDigitSum(int n)
    {
        bool []used = new bool[10];
        int sum = 0;
        while (n > 0) {
 
            // Take last digit
            int digit = n % 10;
 
            // If digit has not been used before
            if (!used[digit]) {
 
                // Set digit as used
                used[digit] = true;
                sum += digit;
            }
 
            // Remove last digit
            n = n / 10;
        }
 
        return sum;
    }
 
    // Function to check whether the sum of
    // distinct digits of two numbers are equal
    static String checkSum(int m, int n)
    {
        int sumM = distinctDigitSum(m);
        int sumN = distinctDigitSum(n);
 
        if (sumM == sumN)
            return "YES";
        return "NO";
    }
 
    // Driver code
    static public void Main (){
        int m = 2452, n = 9222;
        Console.WriteLine(checkSum(m, n));
    }
//This code is contributed by akt_mit   
}

PHP

<?php
// PHP program to check if the sum of distinct
// digits of two integers are equal
 
// Function to return the sum of
// distinct digits of a number
function distinctDigitSum($n)
{
    $used[10] = array();
    $sum = 0;
    while ($n > 0)
    {
 
        // Take last digit
        $digit = $n % 10;
 
        // If digit has not been used before
        if ($used > 0)
        {
 
            // Set digit as used
            $used[$digit] = true;
            $sum += $digit;
        }
 
        // Remove last digit
        $n = (int)$n / 10;
    }
 
    return $sum;
}
 
// Function to check whether the sum of
// distinct digits of two numbers are equal
function checkSum($m, $n)
{
    $sumM = distinctDigitSum($m);
    $sumN = distinctDigitSum($n);
     
    if ($sumM != $sumN)
        return "YES";
    return "NO";
}
 
// Driver code
$m = 2452;
$n = 9222;
echo (checkSum($m, $n));
 
// This code is contributed by ajit..
?>

Javascript

<script>
// javascript program to check if the sum of distinct
// digits of two integers are equal
 
    // Function to return the sum of
    // distinct digits of a number
    function distinctDigitSum(n)
    {
        var used = Array(10).fill(false);
        var sum = 0;
        while (n > 0)
        {
 
            // Take last digit
            var digit = n % 10;
 
            // If digit has not been used before
            if (!used[digit]) {
 
                // Set digit as used
                used[digit] = true;
                sum += digit;
            }
 
            // Remove last digit
            n = parseInt(n / 10);
        }
 
        return sum;
    }
 
    // Function to check whether the sum of
    // distinct digits of two numbers are equal
    function checkSum(m , n) {
        var sumM = distinctDigitSum(m);
        var sumN = distinctDigitSum(n);
 
        if (sumM == sumN)
            return "YES";
        return "NO";
    }
 
    // Driver code
        var m = 2452, n = 9222;
        document.write(checkSum(m, n));
 
// This code is contributed by todaysgaurav
</script>
Producción: 

YES

 

Complejidad del tiempo: O(log 10 m + log 10 n)

Espacio Auxiliar: O(10)

Publicación traducida automáticamente

Artículo escrito por SanjayR 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 *