Open In App

Check if the sum of distinct digits of two integers are equal

Last Updated : 22 Aug, 2022
Comments
Improve
Suggest changes
Like Article
Like
Report

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>

Output: 
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


Next Article

Similar Reads