📜  两个阶乘积的尾随0(1)

📅  最后修改于: 2023-12-03 15:06:14.723000             🧑  作者: Mango

两个阶乘积的尾随0

在计算阶乘时,尾随0的个数对于某些问题是非常有用的。例如,在计算一些数字的阶乘时,需要确定其末尾具有多少个0. 现在考虑计算两个数字的阶乘的乘积的末尾0的个数。

解释

假设我们有两个数字n和m,那么可以得到它们的阶乘的乘积:n! × m!。假设我们现在要计算这个数字的末尾0的个数。我们可以通过考虑n! × m!中的质因数分解来计算它。只有2和5的乘积结果末尾才会有0。因此,如果我们要找到尾随0的个数,我们需要找到n! × m!中有多少个2和5的乘积。然而,很显然,2的个数远多于5的个数,因此我们只需要找到n! × m!中5的个数即可。我们可以使用以下公式计算:

count = 0
while n > 0 and n % 5 == 0:
    count += 1
    n = n / 5
count += 0
while m > 0 and m % 5 == 0:
    count += 1
    m = m / 5
count += (n * m) // 5

在上面的代码中,首先计算n中5的个数,然后计算m中5的个数,并增加n和m中乘积数的一半。 endwhile。

程序代码
def get_trailing_zeros(n: int, m:int) -> int:
    count = 0
    while n > 0 and n % 5 == 0:
        count += 1
        n = n / 5
    count += 0
    while m > 0 and m % 5 == 0:
        count += 1
        m = m / 5
    count += (n * m) // 5
    return count
使用实例
n = 10
m = 8
result = get_trailing_zeros(n, m)
print(f"The number of trailing zeros in the product of {n}! and {m}! is {result}")

上面的代码将打印:

The number of trailing zeros in the product of 10! and 8! is 5