如何用C++编程阶乘尾数零的个数,N!末尾有多少个零

要C++的方法谢谢大家啦,帮帮忙!!!
2025-04-16 18:57:46
推荐回答(1个)
回答1:

乘积末尾的0的个数依赖于因子中的2的个数和5的个数。对于阶乘来说,每2个数字就至少有一个2的因子,所以2的因子是足够的。5的因子相对少些,至少连续5个数才能保证一定出现一个。注意,这里连续5个书保证出现一个5的因子是指最少的情况。比如1,2,3,4,5,这就只会出现一个。但是考虑 21,22,23,24,25,25 = 5 * 5,所以如果乘以25那就能得到2个5的因子。

//---------------------------------------------------------------------------

#include
using namespace std;
int main(void)
{
int tmp = 5;
int zeroCnt = 0,n;
cin>>n;
while(n >= tmp)
{
zeroCnt += n/tmp;
tmp *= 5;
}
cout<< zeroCnt< return 0;
}

//---------------------------------------------------------------------------