 Open in App
Not now

# Check if a number can be represented as the sum of numbers with at least one digit equal to K

• Difficulty Level : Medium
• Last Updated : 26 Oct, 2021

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 ``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

 ``

## 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)

My Personal Notes arrow_drop_up