对任意输入的正整数N,编写C程序求N!的尾部连续0的个数
2009-10-17 21:32
232 查看
对任意输入的正整数N,编写C程序求N!的尾部连续0的个数,并指出计算复杂度。如:18!=6402373705728000,尾部连续0的个数是3。
(不用考虑数值超出计算机整数界限的问题)
int NumZero (int n){
int tmp;
int res = 0;
while (n> 4){ // 4以下就不管了,没有0
tmp = n--;
while(tmp % 5 == 0){ // 这里是本算法的精髓
++res;
tmp /= 5;
}
}
return res;
}
///////////////////////////////////////
int NumZero (int n){
int res = 0;
for(;n>0;n/=5) res += n/5;
return res;
}
(不用考虑数值超出计算机整数界限的问题)
int NumZero (int n){
int tmp;
int res = 0;
while (n> 4){ // 4以下就不管了,没有0
tmp = n--;
while(tmp % 5 == 0){ // 这里是本算法的精髓
++res;
tmp /= 5;
}
}
return res;
}
///////////////////////////////////////
int NumZero (int n){
int res = 0;
for(;n>0;n/=5) res += n/5;
return res;
}
相关文章推荐
- 对任意输入的正整数N,编写C程序求N!的尾部连续0的个数...
- 对任意输入的正整数N,编写C程序求N!的尾部连续0的个数,并指出计算复杂度。(百度面试题)
- 输入两个整数n和m, 从数列1,2,...,n中任意选择几个数,使其和等于m, 要求编写程序输出所有的组合
- 一个正整数有可能可以表示为n(n>=2)个连续的正整数之和,如:15=1+2+3+4+5,15=4+5+6,15=7+8 请编写程序,根据输入的任何一个正整数,找出符合这种要求的所有连续正整数序列。
- 编写一程序要求任意输入四位十六进制的整数,以反序的方式输出该十六进制数。 例如 :输入9AF0, 则输出 0FA9
- 输入两个整数n和m, 从数列1,2,...,n中任意选择几个数,使其和等于m, 要求编写程序输出所有的组合
- 19. 中兴面试题:输入两个整数n和m, 从数列1,2,...,n中任意选择几个数,使其和等于m, 要求编写程序输出所有的组合
- 输入两个整数n和m, 从数列1,2,...,n中任意选择几个数,使其和等于m, 要求编写程序输出所有的组合
- 一个正整数有可能可以被表示为 m(m>=2) 个连续正整数之和,编写一个程序,输入一个正整数,然后找出符合这种要求的所有 连续正整数序列,若不存在这种序列,则打印None。
- 写一个程序,输入一个长整型数,输入一任意一个长整数,请用函数一求出长整数所有之和,用函数二求出长整型数的逆序数。
- 编写一个程序,此程序在运行时要求用户输入一个 整数,代表某门课的考试成绩,程序接着给出“不及格”、“及格”、“中”、“良”、“优”的结论。要求程序必须具备足够的健壮性,不管用户输入什 么样的内容,都不会崩溃
- 编写一个程序,此程序在运行时要求用户输入一个 整数,代表某门课的考试成绩,程序接着给出“不及格”、“及格”、“中”、“良”、“优”的结论。
- C语言程序设计习题 1-9 编写一个将输入复制到输出的程序,并将其中连续多个空格用一个空格代替
- /*编写程序,其中自定义一函数,用来判断一个整数是否为素数,主函数输入一个数,输出是否为素数*/
- 编写程序通过栈的方式将任意输入的字符串内容进行逆序输出。
- 编写程序通过栈的方式将任意输入的字符串内容进行逆序输出。
- 1.编写一个简单的C语言程序:计算输入多个整数的平均值,并将此程序分割成多个小文件。 2.为第1题中的程序编写makefile文件,用make编译后改成返回最小值,再编译,观察有多少文件不需要重新
- 编写Java程序,输入3个整数,并求出3个整数的最大值和最小值。
- 编写一个将输入复制到输出的程序,并将其中连续的多个空格用一个空格代替
- java编程基础篇--> 编写一个程序,从键盘输入三个整数,求三个整数中的最小值。