Given two integer m and n, the task is to find the sum of distinct digits of both the numbers and print YES if the both the sums are equal else print NO.
Examples:
Input: m = 2452, n = 9222
Output: YES
The sum of distinct digits of 2452 is 11 (2 + 4 + 5)
And of 9222 is 11 (9 + 2)
Input: m = 121, n = 3035
Output: NO
Approach: Find the sum of unique digits of m and n and store them in sumM and sumN respectively. If sumM = sumN then print YES else print NO.
Below is the implementation of the above approach:
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> |
YES
Time Complexity: O(log10m + log10n) since at the end of the loop the number gets divided by 10 so the algorithm takes logarithmic time to perform all operations
Auxiliary Space: O(10) since an array of constant length 10 is used so overall space occupied by the algorithm is constant
Ready to dive in? Explore our Free Demo Content and join our DSA course, trusted by over 100,000 neveropen!