给定两个整数L和R ,任务是查找L到R范围内的所有自然数的数字累积乘积(即,数字乘积的乘积)。
例子:
Input: L = 2, R = 5
Output: 14
Explanation:
2 * 3 * 4 * 5 = 120
Input: L = 11, R = 15
Output: 120
Explanation:
(1*1) * (1*2) * (1*3) * (1*4) * (1*5) = 1 * 2 * 3 * 4 * 5 = 120
方法:
为了解决上述问题,我们必须观察以下情况:
- 如果L和R之间的差大于9,则乘积为0,因为间隔为9后,每个数字中都出现一个数字0。
- 否则,我们可以在从L到R的循环中找到该乘积,该循环最多运行9次。
下面是上述方法的实现:
C++
// C++ program to print the product
// of all numbers in range L and R
#include
using namespace std;
// Function to get product of digits
int getProduct(int n)
{
int product = 1;
while (n != 0) {
product = product * (n % 10);
n = n / 10;
}
return product;
}
// Function to find the product of digits
// of all natural numbers in range L to R
int productinRange(int l, int r)
{
if (r - l > 9)
return 0;
else {
int p = 1;
// Iterate between L to R
for (int i = l; i <= r; i++)
p *= getProduct(i);
return p;
}
}
// Driver Code
int main()
{
int l = 11, r = 15;
cout << productinRange(l, r)
<< endl;
l = 1, r = 15;
cout << productinRange(l, r);
return 0;
}
Java
// Java program to print the product
// of all numbers in range L and R
class GFG{
// Function to get product of digits
static int getProduct(int n)
{
int product = 1;
while (n != 0)
{
product = product * (n % 10);
n = n / 10;
}
return product;
}
// Function to find the product of digits
// of all natural numbers in range L to R
static int productinRange(int l, int r)
{
if (r - l > 9)
return 0;
else
{
int p = 1;
// Iterate between L to R
for (int i = l; i <= r; i++)
p *= getProduct(i);
return p;
}
}
// Driver Code
public static void main(String[] args)
{
int l = 11, r = 15;
System.out.print(productinRange(l, r) + "\n");
l = 1; r = 15;
System.out.print(productinRange(l, r));
}
}
// This code is contributed by Rohit_ranjan
Python3
# Python3 program to print the product
# of all numbers in range L and R
# Function to get product of digits
def getProduct(n):
product = 1
while (n != 0):
product = product * (n % 10)
n = int(n / 10)
return product
# Function to find the product of digits
# of all natural numbers in range L to R
def productinRange(l, r):
if (r - l > 9):
return 0
else:
p = 1
# Iterate between L to R
for i in range(l, r + 1):
p = p * getProduct(i)
return p
# Driver Code
l = 11
r = 15
print (productinRange(l, r), end='\n')
l = 1
r = 15
print (productinRange(l, r))
# This code is contributed by PratikBasu
C#
// C# program to print the product
// of all numbers in range L and R
using System;
class GFG{
// Function to get product of digits
static int getProduct(int n)
{
int product = 1;
while (n != 0)
{
product = product * (n % 10);
n = n / 10;
}
return product;
}
// Function to find the product of digits
// of all natural numbers in range L to R
static int productinRange(int l, int r)
{
if (r - l > 9)
return 0;
else
{
int p = 1;
// Iterate between L to R
for(int i = l; i <= r; i++)
p *= getProduct(i);
return p;
}
}
// Driver Code
public static void Main(String[] args)
{
int l = 11, r = 15;
Console.Write(productinRange(l, r) + "\n");
l = 1; r = 15;
Console.Write(productinRange(l, r));
}
}
// This code is contributed by amal kumar choubey
Javascript
输出:
120
0