这个题最简单的办法就是对每个乘数进行因数分解,得到每个数中因数2和5的个数,然后min(2,5)就是0的个数吧,但是当时让直接给结果,想了下5的个数肯定小于2的个数,然后简单的统计了一下给了个答案23,后来回来算了下应该是24个。
#include <iostream>
using namespace std;
int numof5(int i)
{
int num = 0;
while (i%5 == 0)
{
num++;
i = i / 5;
}
return num;
}
int main()
{
int num;
int num_of_end_zero = 0;
cout<<"求某个数阶乘的结果后面有多少个0"<<endl;
cin>>num;
for (int i = 1; i <= num; i++)
{
num_of_end_zero += numof5(i);
}
cout<<num_of_end_zero<<endl;
cin.get();
return 0;
}