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++ 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 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 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# 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 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.. ?> |
<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