给定一个具有n个数字的数组。任务是在将所有n个数字相乘后,在最后打印连续的零的数字。
例子 :
Input : arr[] = {100, 10}
Output : 3
Explanation : 100 x 10 = 1000,
3 zero's at the end.
Input : arr[] = {100, 10, 5, 25, 35, 14}
Output : 4
Explanation :
100 x 10 x 5 x 25 x 35 x 14 = 61250000,
4 zero's at the end
天真的方法:
首先将所有数字相乘,然后保存到字符串(因为如果乘法数大到2 ^ 64,那么它将给出错误的信息,因此将每一个倍数都存储在字符串),然后计算零的数量。
高效的方法:
首先计算n个数字的2的因数,然后计算所有n个数字的5的因数,然后打印最小的一个。
例如 –
n_number's | 2's factor | 5's factor
100 | 2 | 2
10 | 1 | 1
5 | 0 | 1
25 | 0 | 2
35 | 0 | 1
14 | 1 | 0
Total | 4 | 7
we can take a minimum so there number of
zero's is 4
下面是上述方法的实现:
C++
// CPP program to find the number of consecutive zero
// at the end after multiplying n numbers
#include
using namespace std;
// Function to count two's factor
int two_factor(int n)
{
// Count number of 2s present in n
int twocount = 0;
while (n % 2 == 0)
{
twocount++;
n = n / 2;
}
return twocount;
}
// Function to count five's factor
int five_factor(int n)
{
int fivecount = 0;
while (n % 5 == 0)
{
fivecount++;
n = n / 5;
}
return fivecount;
}
// Function to count number of zeros
int find_con_zero(int arr[], int n)
{
int twocount = 0;
int fivecount = 0;
for (int i = 0; i < n; i++) {
// Count the two's factor of n number
twocount += two_factor(arr[i]);
// Count the five's factor of n number
fivecount += five_factor(arr[i]);
}
// Return the minimum
if (twocount < fivecount)
return twocount;
else
return fivecount;
}
// Driver Code
int main()
{
int arr[] = { 100, 10, 5, 25, 35, 14 };
int n = 6;
cout << find_con_zero(arr, n);
}
Java
// Java program to find the number
// of consecutive zero at the end
// after multiplying n numbers
public class GfG{
// Function to count two's factor
static int two_factor(int n)
{
// Count number of 2s
// present in n
int twocount = 0;
while (n % 2 == 0)
{
twocount++;
n = n / 2;
}
return twocount;
}
// Function to count five's
// factor
static int five_factor(int n)
{
int fivecount = 0;
while (n % 5 == 0)
{
fivecount++;
n = n / 5;
}
return fivecount;
}
// Function to count number of zeros
static int find_con_zero(int arr[], int n)
{
int twocount = 0;
int fivecount = 0;
for (int i = 0; i < n; i++) {
// Count the two's factor
// of n number
twocount += two_factor(arr[i]);
// Count the five's factor
// of n number
fivecount += five_factor(arr[i]);
}
// Return the minimum
if (twocount < fivecount)
return twocount;
else
return fivecount;
}
// driver function
public static void main(String s[])
{
int arr[] = { 100, 10, 5, 25, 35, 14 };
int n = 6;
System.out.println(find_con_zero(arr, n));
}
}
// This code is contributed by Gitanjali
Python3
# Python3 code to find the number of consecutive zero
# at the end after multiplying n numbers
# Function to count two's factor
def two_factor( n ):
# Count number of 2s present in n
twocount = 0
while n % 2 == 0:
twocount+=1
n =int( n / 2)
return twocount
# Function to count five's factor
def five_factor( n ):
fivecount = 0
while n % 5 == 0:
fivecount+=1
n = int(n / 5)
return fivecount
# Function to count number of zeros
def find_con_zero( arr, n ):
twocount = 0
fivecount = 0
for i in range(n):
# Count the two's factor of n number
twocount += two_factor(arr[i])
# Count the five's factor of n number
fivecount += five_factor(arr[i])
# Return the minimum
if twocount < fivecount:
return twocount
else:
return fivecount
# Driver Code
arr = [ 100, 10, 5, 25, 35, 14 ]
n = 6
print(find_con_zero(arr, n))
# This code is contributed by "Sharad_Bhardwaj".
C#
// C# program to find the number
// of consecutive zero at the end
// after multiplying n numbers
using System;
public class GfG {
// Function to count two's factor
static int two_factor(int n)
{
// Count number of 2s
// present in n
int twocount = 0;
while (n % 2 == 0)
{
twocount++;
n = n / 2;
}
return twocount;
}
// Function to count five's
// factor
static int five_factor(int n)
{
int fivecount = 0;
while (n % 5 == 0)
{
fivecount++;
n = n / 5;
}
return fivecount;
}
// Function to count number of zeros
static int find_con_zero(int []arr, int n)
{
int twocount = 0;
int fivecount = 0;
for (int i = 0; i < n; i++) {
// Count the two's factor
// of n number
twocount += two_factor(arr[i]);
// Count the five's factor
// of n number
fivecount += five_factor(arr[i]);
}
// Return the minimum
if (twocount < fivecount)
return twocount;
else
return fivecount;
}
// driver function
public static void Main()
{
int []arr = { 100, 10, 5, 25, 35, 14 };
int n = 6;
Console.WriteLine(find_con_zero(arr, n));
}
}
// This code is contributed by vt_m.
PHP
Javascript
输出 :
4