Check if given number contains a digit which is the average of all other digits
Given an integer N, the task is to check whether N contains a digit D such that it is the average of all other digits present in N.
Examples:
Input: N = 132
Output: Yes
Explanation:
Since, (1 + 3)/2 = 2.Input: N = 436
Output: No
Explanation:
No such digit exists which is the average of all other digits.
Approach:
To solve the problem, follow the steps below:
- Store the sum and count of digits of N.
- Store the digits in a Set .
- If sum%count is 0 and the integer sum/count is present in the Set, that is sum/count is a digit of N, then print Yes. Otherwise print No.
Below is the implementation of the above approach:
C++
// C++ Program to check whether a // given number contains a digit // which is the average of all // other digits #include <bits/stdc++.h> using namespace std; // Function which checks if a // digits exists in n which // is the average of all other digits void check( int n) { set< int > digits; int temp = n; int sum = 0; int count = 0; while (temp > 0) { // Calculate sum of // digits in n sum += temp % 10; // Store the digits digits.insert(temp % 10); // Increase the count // of digits in n count++; temp = temp / 10; } // If average of all digits // is an integer if (sum % count == 0 // If the average is a digit // in n && digits.find(sum / count) != digits.end()) cout << "Yes" << endl; // Otherwise else cout << "No" << endl; } // Driver Code int main() { int n = 42644; check(n); } |
Java
// Java program to check whether a // given number contains a digit // which is the average of all // other digits import java.util.*; class GFG{ // Function which checks if a // digits exists in n which // is the average of all other digits static void check( int n) { HashSet<Integer> digits = new HashSet<Integer>(); int temp = n; int sum = 0 ; int count = 0 ; while (temp > 0 ) { // Calculate sum of // digits in n sum += temp % 10 ; // Store the digits digits.add(temp % 10 ); // Increase the count // of digits in n count++; temp = temp / 10 ; } // If average of all digits // is an integer if (sum % count == 0 && digits.contains(sum / count)) System.out.print( "Yes" + "\n" ); // Otherwise else System.out.print( "No" + "\n" ); } // Driver Code public static void main(String[] args) { int n = 42644 ; check(n); } } // This code is contributed by Rajput-Ji |
Python3
# Python3 program to check whether a given # number contains a digit which is # the average of all other digits # Function which checks if a # digits exists in n which is # the average of all other digits def check (n): digits = set () temp = n Sum = 0 count = 0 while (temp > 0 ): # Calculate sum of # digits in n Sum + = temp % 10 # Store digits digits.add(temp % 10 ) # Increase the count of # digits in n count + = 1 temp = temp / / 10 # If average of all digits is integer if (( Sum % count = = 0 ) and (( int )( Sum / count) in digits)): print ( "Yes" ) else : print ( "No" ) # Driver code n = 42644 # Function calling check(n) # This code is contributed by himanshu77 |
C#
// C# program to check whether a given // number contains a digit which is the // average of all other digits using System; using System.Collections.Generic; class GFG{ // Function which checks if a // digits exists in n which // is the average of all other digits static void check( int n) { HashSet< int > digits = new HashSet< int >(); int temp = n; int sum = 0; int count = 0; while (temp > 0) { // Calculate sum of // digits in n sum += temp % 10; // Store the digits digits.Add(temp % 10); // Increase the count // of digits in n count++; temp = temp / 10; } // If average of all digits // is an integer if (sum % count == 0 && digits.Contains(sum / count)) Console.Write( "Yes" + "\n" ); // Otherwise else Console.Write( "No" + "\n" ); } // Driver Code public static void Main(String[] args) { int n = 42644; check(n); } } // This code is contributed by Rajput-Ji |
Javascript
<script> // Javascript Program to check whether a // given number contains a digit // which is the average of all // other digits // Function which checks if a // digits exists in n which // is the average of all other digits function check(n) { var digits = new Set(); var temp = n; var sum = 0; var count = 0; while (temp > 0) { // Calculate sum of // digits in n sum += temp % 10; // Store the digits digits.add(temp % 10); // Increase the count // of digits in n count++; temp = parseInt(temp / 10); } // If average of all digits // is an integer if (sum % count == 0 // If the average is a digit // in n && digits.has(sum / count)) document.write( "Yes" ); // Otherwise else document.write( "No" ); } // Driver Code var n = 42644; check(n); </script> |
Output:
Yes
Time Complexity: O(log10N)
Auxiliary Space: O(1) because constant space for the set is required.
Contact Us