Dados dos enteros m y n , la tarea es encontrar la suma de dígitos distintos de ambos números e imprimir SÍ 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 SÍ ; 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)