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)
Recommended Articles