📜  计算(1 ^ 1)*(2 ^ 2)*(3 ^ 3)*(4 ^ 4)*中尾随零的数量。

📅  最后修改于: 2021-04-23 15:27:41             🧑  作者: Mango

给定整数n ,任务是在函数查找尾随零的数量f(n)=$\prod\limits_{i = 1}^{n} i^{i}$f(n)= 1 1 * 2 2 * 3 3 *…* n n

例子:

方法:我们知道5 * 2 = 10,即1个尾随零是单个5和一个2相乘的结果。因此,如果我们有5的x数和2的y数,那么尾随零的数量将是是min(x,y)
现在,对于序列中的每个数字i ,我们需要计算25的因数xy,但是2s5s的数目分别为x * iy * i,因为在序列中i为提高到权力本身,即。计算整个系列中2s5s的数量,并打印其中的最小值,这是必需的答案。

下面是上述方法的实现:

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