给定整数n ,任务是在函数查找尾随零的数量即f(n)= 1 1 * 2 2 * 3 3 *…* n n 。
例子:
Input: n = 5
Output: 5
f(5) = 11 * 22 * 33 * 44 * 55 = 1 * 4 * 27 * 256 * 3125 = 86400000
Input: n = 12
Output: 15
方法:我们知道5 * 2 = 10,即1个尾随零是单个5和一个2相乘的结果。因此,如果我们有5的x数和2的y数,那么尾随零的数量将是是min(x,y) 。
现在,对于序列中的每个数字i ,我们需要计算2和5的因数x和y,但是2s和5s的数目分别为x * i和y * i,因为在序列中i为提高到权力本身,即我。计算整个系列中2s和5s的数量,并打印其中的最小值,这是必需的答案。
下面是上述方法的实现:
C++
// C++ implementation of the approach
#include
using namespace std;
// Function to return the number of
// trailing zeros
int trailing_zeros(int N)
{
// To store the number of 2s and 5s
int count_of_two = 0, count_of_five = 0;
for (int i = 1; i <= N; i++) {
int val = i;
while (val % 2 == 0 && val > 0) {
val /= 2;
// If we get a factor 2 then we
// have i number of 2s because
// the power of the number is
// raised to i
count_of_two += i;
}
while (val % 5 == 0 && val > 0) {
val /= 5;
// If we get a factor 5 then
// we have i number of 5s
// because the power of the
// number is raised to i
count_of_five += i;
}
}
// Take the minimum of them
int ans = min(count_of_two, count_of_five);
return ans;
}
// Driver code
int main()
{
int N = 12;
cout << trailing_zeros(N);
return 0;
}
Java
// Java implementation of the approach
class GFG
{
// Function to return the number of
// trailing zeros
static int trailing_zeros(int N)
{
// To store the number of 2s and 5s
int count_of_two = 0, count_of_five = 0;
for (int i = 1; i <= N; i++)
{
int val = i;
while (val % 2 == 0 && val > 0)
{
val /= 2;
// If we get a factor 2 then we
// have i number of 2s because
// the power of the number is
// raised to i
count_of_two += i;
}
while (val % 5 == 0 && val > 0)
{
val /= 5;
// If we get a factor 5 then
// we have i number of 5s
// because the power of the
// number is raised to i
count_of_five += i;
}
}
// Take the minimum of them
int ans = Math.min(count_of_two, count_of_five);
return ans;
}
// Driver code
public static void main (String[] args)
{
int N = 12;
System.out.println(trailing_zeros(N));
}
}
// This code is contributed by chandan_jnu
Python3
# Python 3 implementation of the approach
# Function to return the number of
# trailing zeros
def trailing_zeros(N):
# To store the number of 2s and 5s
count_of_two = 0
count_of_five = 0
for i in range(1, N + 1, 1):
val = i
while (val % 2 == 0 and val > 0):
val /= 2
# If we get a factor 2 then we
# have i number of 2s because
# the power of the number is
# raised to i
count_of_two += i
while (val % 5 == 0 and val > 0):
val /= 5
# If we get a factor 5 then we
# have i number of 5s because
# the power of the number is
# raised to i
count_of_five += i
# Take the minimum of them
ans = min(count_of_two, count_of_five)
return ans
# Driver code
if __name__ == '__main__':
N = 12
print(trailing_zeros(N))
# This code is contributed by
# Sanjit_Prasad
C#
// C# implementation of the above approach
using System;
class GFG
{
// Function to return the number of
// trailing zeros
static int trailing_zeros(int N)
{
// To store the number of 2s and 5s
int count_of_two = 0, count_of_five = 0;
for (int i = 1; i <= N; i++)
{
int val = i;
while (val % 2 == 0 && val > 0)
{
val /= 2;
// If we get a factor 2 then we
// have i number of 2s because
// the power of the number is
// raised to i
count_of_two += i;
}
while (val % 5 == 0 && val > 0)
{
val /= 5;
// If we get a factor 5 then
// we have i number of 5s
// because the power of the
// number is raised to i
count_of_five += i;
}
}
// Take the minimum of them
int ans = Math.Min(count_of_two, count_of_five);
return ans;
}
// Driver code
public static void Main()
{
int N = 12;
Console.WriteLine(trailing_zeros(N));
}
}
// This code is contributed by Ryuga
PHP
0)
{
$val /= 2;
// If we get a factor 2 then we
// have i number of 2s because
// the power of the number is
// raised to i
$count_of_two += $i;
}
while ($val % 5 == 0 && $val > 0)
{
$val /= 5;
// If we get a factor 5 then
// we have i number of 5s
// because the power of the
// number is raised to i
$count_of_five += $i;
}
}
// Take the minimum of them
$ans = min($count_of_two, $count_of_five);
return $ans;
}
// Driver code
$N = 12;
echo trailing_zeros($N);
// This code is contributed by ita_c
?>
输出:
15