Wednesday, July 3, 2024
HomeData ModellingData Structure & AlgorithmCheck if the sum of distinct digits of two integers are equal

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

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

Feeling lost in the world of random DSA topics, wasting time without progress? It’s time for a change! Join our DSA course, where we’ll guide you on an exciting journey to master DSA efficiently and on schedule.
Ready to dive in? Explore our Free Demo Content and join our DSA course, trusted by over 100,000 neveropen!

Nicole Veronica Rubhabha
Nicole Veronica Rubhabha
A highly competent and organized individual DotNet developer with a track record of architecting and developing web client-server applications. Recognized as a personable, dedicated performer who demonstrates innovation, communication, and teamwork to ensure quality and timely project completion. Expertise in C#, ASP.Net, MVC, LINQ, EF 6, Web Services, SQL Server, MySql, Web development,
RELATED ARTICLES

LEAVE A REPLY

Please enter your comment!
Please enter your name here

Most Popular

Recent Comments