给定两个整数N和K ,任务是打印范围为[1,N]的所有数字,这些数字的乘积等于K。如果找不到这样的数字,则打印“ -1” 。
例子:
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
方法:请按照以下步骤解决问题:
- 初始化一个变量,例如flag,以存储是否存在满足给定条件的任何数字。
- 声明一个函数productOfDigits(),以查找数字的乘积。
- 迭代范围[1,N] :
- 如果arr [i]的数字乘积等于K ,则打印该数字并设置flag = 1 。
- 如果flag等于0 ,则意味着在[1,N]范围内找不到该数字。因此,打印“ -1” 。
下面是上述方法的实现:
C++
// C++ program for the above approach
#include
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.
输出
25 52 125 152 215 251
时间复杂度: O(N * logN)
辅助空间: O(1)