C ++中的阶乘尾随零
在这里,我们将看到如何为任意数量的阶乘结果计算尾随0的数量。因此,如果n=5,则5!=120。只有一个尾随0。对于20!它将是4个零,即20!=2432902008176640000。
最简单的方法是计算阶乘并计数0。但是,对于较大的n值,此方法将失败。因此,我们将采用另一种方法。如果素因子为2和5,则尾随零将存在。如果我们计算2s和5s,则可以得到结果。为此,我们将遵循此规则。
尾随0s=阶乘因数(n)的5s计数
因此尾随0s=$$\lvert\frac{n}{5}\rvert+\lvert\frac{n}{25}\rvert+\lvert\frac{n}{125}\rvert+...$$
为了解决这个问题,我们必须遵循以下步骤-
设置计数=0
对于i=5,(n/i)>1,更新i=i*5,做
计数=计数+(n/i)
返回计数
范例(C++)
#include <iostream> #include <cmath> #define MAX 20 using namespace std; int countTrailingZeros(int n) { int count = 0; for (int i = 5; n / i >= 1; i *= 5) count += n / i; return count; } main() { int n = 20; cout << "Number of trailing zeros: " << countTrailingZeros(n); }
输入值
Number of trailing zeroes: 20
输出结果
Number of trailing zeros: 4