Check if a number can be represented as the sum of numbers with at least one digit equal to K
Given integers N and K, the task is to check if a number can be represented as the sum of numbers that have at least one digit equal to K.
Example:
Input: N = 68, K = 7
Output: YES
Explanation: 68 = (27 + 17 + 17 + 7). Each number has atleast one digit equal to 7.Input: N = 23, K = 3
Output: YES
Explanation: 23 itself contains a digit equal to 3.
Approach: The given problem can be solved by using simple concepts of math. Follow the steps below to solve the problem:
- Initialize a variable temp to k, and also take a counter say count, assign it with 0
- Iterate till the last digits of temp and N are not equal and at each iteration
- Increment the value of temp by k
- Keep a count of iterations and break the loop if the count becomes greater than 10
- Check if the last digits of temp and N are equal, and if the value of temp <= N:
- If the above condition is satisfied return true
- Else return false
- Also if k * 10 <= N, return true
- Else return false
Below is the implementation of the above approach:
C++
// C++ implementation for the above approach #include <bits/stdc++.h> using namespace std; // Function to Check if a number can // be equal to sum of numbers having // at least one digit equal to k bool checkEqualtoSum( int N, int k) { // Temporary variable to // store k int temp = k; // Variable for count int count = 0; // Iterating till count is less or // equal to 10 and N % 10 is not // equal to temp % 10 while (count <= 10 && N % 10 != temp % 10) { temp += k; count++; } // If N % 10 is equal to temp % 10 // and temp is less or equal to N, // return true if (N % 10 == temp % 10 && temp <= N) return true ; // If k * 10 <= N, return true if (k * 10 <= N) return true ; // Else return false return false ; } // Driver Code int main() { int N = 68; int K = 7; // Call the function if (checkEqualtoSum(N, K)) cout << "YES" ; else cout << "NO" ; return 0; } |
Java
// Java program for the above approach import java.io.*; class GFG { // Function to Check if a number can // be equal to sum of numbers having // at least one digit equal to k static boolean checkEqualtoSum( int N, int k) { // Temporary variable to // store k int temp = k; // Variable for count int count = 0 ; // Iterating till count is less or // equal to 10 and N % 10 is not // equal to temp % 10 while (count <= 10 && N % 10 != temp % 10 ) { temp += k; count++; } // If N % 10 is equal to temp % 10 // and temp is less or equal to N, // return true if (N % 10 == temp % 10 && temp <= N) return true ; // If k * 10 <= N, return true if (k * 10 <= N) return true ; // Else return false return false ; } // Driver Code public static void main(String[] args) { // Given Input int N = 68 ; int K = 7 ; // Call the function if (checkEqualtoSum(N, K)) System.out.println( "YES" ); else System.out.println( "NO" ); } } // This code is contributed by dwivediyash |
Python3
# python implementation for the above approach # Function to Check if a number can # be equal to sum of numbers having # at least one digit equal to k def checkEqualtoSum(N, k): # Temporary variable to # store k temp = k # Variable for count count = 0 # Iterating till count is less or # equal to 10 and N % 10 is not # equal to temp % 10 while (count < = 10 and N % 10 ! = temp % 10 ): temp + = k count + = 1 # If N % 10 is equal to temp % 10 # and temp is less or equal to N, # return true if (N % 10 = = temp % 10 and temp < = N): return True # If k * 10 <= N, return true if (k * 10 < = N): return True # Else return false return False # Driver Code if __name__ = = "__main__" : N = 68 K = 7 # Call the function if (checkEqualtoSum(N, K)): print ( "YES" ) else : print ( "NO" ) # This code is contributed by rakeshsahni |
Javascript
<script> // JavaScript implementation for the above approach // Function to Check if a number can // be equal to sum of numbers having // at least one digit equal to k const checkEqualtoSum = (N, k) => { // Temporary variable to // store k let temp = k; // Variable for count let count = 0; // Iterating till count is less or // equal to 10 and N % 10 is not // equal to temp % 10 while (count <= 10 && N % 10 != temp % 10) { temp += k; count++; } // If N % 10 is equal to temp % 10 // and temp is less or equal to N, // return true if (N % 10 == temp % 10 && temp <= N) return true ; // If k * 10 <= N, return true if (k * 10 <= N) return true ; // Else return false return false ; } // Driver Code let N = 68; let K = 7; // Call the function if (checkEqualtoSum(N, K)) document.write( "YES" ); else document.write( "NO" ); // This code is contributed by rakeshsahni </script> |
C#
// C# implementation for the above approach using System; class gFG { // Function to Check if a number can // be equal to sum of numbers having // at least one digit equal to k static bool checkEqualtoSum( int N, int k) { // Temporary variable to // store k int temp = k; // Variable for count int count = 0; // Iterating till count is less or // equal to 10 and N % 10 is not // equal to temp % 10 while (count <= 10 && N % 10 != temp % 10) { temp += k; count++; } // If N % 10 is equal to temp % 10 // and temp is less or equal to N, // return true if (N % 10 == temp % 10 && temp <= N) return true ; // If k * 10 <= N, return true if (k * 10 <= N) return true ; // Else return false return false ; } // Driver Code public static void Main() { int N = 68; int K = 7; // Call the function if (checkEqualtoSum(N, K)) Console.WriteLine( "YES" ); else Console.WriteLine( "NO" ); } } // This code is contributed by ukasp. |
Output
YES
Time Complexity: O(1)
Auxiliary Space: O(1)
Please Login to comment...