Given two integers N and K, the task is to print all the numbers from the range [1, N] whose product of digits is equal to K. If no such number is found, then print “-1”.
Examples:
Input: N =100, K = 25
Output: 55
Explanation: There is only a single number 55 whose product of digits is equal to K.Input: N = 500, K = 10
Output: 25 52 125 152 215 251
Approach: Follow the steps below to solve the problem:
- Initialize a variable, say flag, to store whether any number satisfying the given conditions exists or not.
- Declare a function, productOfDigits(), to find the product of digits of the number.
- Iterate over the range [1, N]:
- If the product of digits of arr[i] is equal to K, print that number and set flag = 1.
- If flag is equal to 0, which means that no such number is found in the range [1, N]. Therefore, print “-1”.
Below is the implementation of the above approach:
C++
// C++ program for the above approach #include <bits/stdc++.h> using namespace std;
// Function to find the product // of digits of a number int productOfDigits( int N)
{ // Stores the product of
// digits of a number
int product = 1;
while (N != 0) {
product = product * (N % 10);
N = N / 10;
}
// Return the product
return product;
} // Function to print all numbers upto // N having product of digits equal to K void productOfDigitsK( int N, int K)
{ // Stores whether any number satisfying
// the given conditions exists or not
int flag = 0;
// Iterate over the range [1, N]
for ( int i = 1; i <= N; ++i) {
// If product of digits of
// arr[i] is equal to K or not
if (K == productOfDigits(i)) {
// Print that number
cout << i << " " ;
flag = 1;
}
}
// If no numbers are found
if (flag == 0)
cout << "-1" ;
} // Driver Code int main()
{ // Given value of N & K
int N = 500, K = 10;
// Function call to print all numbers
// from [1, N] with product of digits K
productOfDigitsK(N, K);
} |
Java
// Java Program to implement // the above approach import java.io.*;
import java.util.*;
class GFG {
// Function to find the product
// of digits of a number
static int productOfDigits( int N)
{
// Stores the product of
// digits of a number
int product = 1 ;
while (N != 0 ) {
product = product * (N % 10 );
N = N / 10 ;
}
// Return the product
return product;
}
// Function to print all numbers upto
// N having product of digits equal to K
static void productOfDigitsK( int N, int K)
{
// Stores whether any number satisfying
// the given conditions exists or not
int flag = 0 ;
// Iterate over the range [1, N]
for ( int i = 1 ; i <= N; ++i) {
// If product of digits of
// arr[i] is equal to K or not
if (K == productOfDigits(i)) {
// Print that number
System.out.print(i + " " );
flag = 1 ;
}
}
// If no numbers are found
if (flag == 0 )
System.out.println(- 1 );
}
// Driver Code
public static void main(String[] args)
{
// Given value of N & K
int N = 500 , K = 10 ;
// Function call to print all numbers
// from [1, N] with product of digits K
productOfDigitsK(N, K);
}
} // This code is contribute by Kingash. |
Python3
# Python3 program for the above approach # Function to find the product # of digits of a number def productOfDigits(N) :
# Stores the product of
# digits of a number
product = 1 ;
while (N ! = 0 ) :
product = product * (N % 10 );
N = N / / 10 ;
# Return the product
return product;
# Function to print all numbers upto # N having product of digits equal to K def productOfDigitsK(N, K) :
# Stores whether any number satisfying
# the given conditions exists or not
flag = 0 ;
# Iterate over the range [1, N]
for i in range ( 1 , N + 1 ) :
# If product of digits of
# arr[i] is equal to K or not
if (K = = productOfDigits(i)) :
# Print that number
print (i, end = " " );
flag = 1 ;
# If no numbers are found
if (flag = = 0 ) :
print ( "-1" );
# Driver Code if __name__ = = "__main__" :
# Given value of N & K
N = 500 ; K = 10 ;
# Function call to print all numbers
# from [1, N] with product of digits K
productOfDigitsK(N, K);
# This code is contributed by AnkThon
|
C#
// C# program for the above approach using System;
class GFG
{ // Function to find the product
// of digits of a number
static int productOfDigits( int N)
{
// Stores the product of
// digits of a number
int product = 1;
while (N != 0) {
product = product * (N % 10);
N = N / 10;
}
// Return the product
return product;
}
// Function to print all numbers upto
// N having product of digits equal to K
static void productOfDigitsK( int N, int K)
{
// Stores whether any number satisfying
// the given conditions exists or not
int flag = 0;
// Iterate over the range [1, N]
for ( int i = 1; i <= N; ++i) {
// If product of digits of
// arr[i] is equal to K or not
if (K == productOfDigits(i)) {
// Print that number
Console.Write(i + " " );
flag = 1;
}
}
// If no numbers are found
if (flag == 0)
Console.WriteLine(-1);
}
// Driver Code
static public void Main()
{
// Given value of N & K
int N = 500, K = 10;
// Function call to print all numbers
// from [1, N] with product of digits K
productOfDigitsK(N, K);
}
} // This code is contributed by jana_sayantan. |
Javascript
<script> // Javascript program for the above approach // Function to find the product
// of digits of a number
function productOfDigits(N)
{
// Stores the product of
// digits of a number
let product = 1;
while (N != 0) {
product = product * (N % 10);
N = Math.floor(N / 10);
}
// Return the product
return product;
}
// Function to print all numbers upto
// N having product of digits equal to K
function productOfDigitsK(N, K)
{
// Stores whether any number satisfying
// the given conditions exists or not
let flag = 0;
// Iterate over the range [1, N]
for (let i = 1; i <= N; ++i) {
// If product of digits of
// arr[i] is equal to K or not
if (K == productOfDigits(i)) {
// Print that number
document.write(i + " " );
flag = 1;
}
}
// If no numbers are found
if (flag == 0)
document.write(-1);
}
// Driver Code // Given value of N & K
let N = 500, K = 10;
// Function call to print all numbers
// from [1, N] with product of digits K
productOfDigitsK(N, K);
</script> |
Output
25 52 125 152 215 251
Time Complexity: O(N * logN)
Auxiliary Space: O(1)