题目:1024!末尾有多少个0?
解题思路:先考虑下10!末尾有多少个0?就是1*2*3*...*10之后的整数有多少个0出现,经过计算,得到结果为3628800,末尾有2个0;再考虑下20!末尾有多少个0?经过计算,20!末尾有4个0。假设1024!= pow(2, a) * pow(3, b) * pow(5, c) * pow(7, d) * ... = M * pow(10, N),其中a,b,c,d,M,N等都是正整数,只需求出N的个数就是1024!末尾0的个数了。而一个10是由2乘以5得到,那么只需求出a和c之间的较小值即可。代码如下:
#include <iostream>
using namespace std;
int count_zero(){
int count_two = 0, count_five = 0, smaller = 0;
int i, j;
for (i = 1; i <= 1024; ++i){
j = i;
while (j % 2 == 0){
++ count_two;
j /= 2;
}
while (j % 5 == 0){
++ count_five;
j /= 5;
}
}
smaller = count_two<count_five?count_two:count_five;
return smaller;
}
int main(){
int k = count_zero();
cout << "1024!末尾有" << k << "个0" << endl;
system("pause");
return 0;
}