 GFG App
Open App Browser
Continue

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