首先明确n!末尾零的个数等于n!中因子10的个数,又因为10=2*5,但因子2还包含在其他偶数中,所以我们就进一步转化为求解n!中因子5的个数。
式中的除法都是向下取整,算法时间度O(logn)
110 = 15882455415227429404253703127090772871724410234473563207581748318444567162948183030959960131517678520479243672638179990208521148623422266876757623911219200000000000000000000000000
求解代码:
int ans,n;
cin>>n;
while(n)
{
ans += n / 5;
n /= 5; //相当于给分子乘5
}
cout<<ans<<endl;