程序员面试金典——解题总结: 9.17中等难题 17.3设计一个算法,算出n阶乘有多少个尾随0
2017-01-16 14:28
411 查看
#include <iostream> #include <stdio.h> using namespace std; /* 问题:设计一个算法,算出n阶乘有多少个尾随0 分析: 发现凡是n!中寻找出1~n中5的倍数的5的指数累加和k,即为有多少个尾随0, 5! 有1个0, 10! 有2个0 15! 有.. 25 = 5*5,有2个0 125=5^3,有3个0 注意阶乘的结果可能溢出 输入: 20 输出: 5 关键: 1 n阶乘有多少个尾随0 = 求1到n中,有多少个5的倍数 2 球n中有几个m的倍数,直接讲n除以m //直接数一数:5的倍数,25的倍数,125的倍数:比如25,有5个5的倍数,有1个25的倍数,共6个,25刚好多的5被等效认为是25的倍数有1个 int countFactorialZero(int n) { int count = 0; for(int i = 5 ; n / i > 0 ; i *= 5) { count += n / i; } return count; } */ int getZeroTimes(int n) { int count = 0; int temp ; for(int i = 5 ; i <= n; i += 5) { temp = i; while(temp >= 5) { temp /= 5; count++; } } return count; } //直接数一数:5的倍数,25的倍数,125的倍数:比如25,有5个5的倍数,有1个25的倍数,共6个,25刚好多的5被等效认为是25的倍数有1个 int countFactorialZero(int n) { int count = 0; for(int i = 5 ; n / i > 0 ; i *= 5) { count += n / i; } return count; } void process() { int n; while(cin >>n) { //int result = getZeroTimes(n); int result = countFactorialZero(n); cout << result << endl; } } int main(int argc , char* argv[]) { process(); getchar(); return 0; }
相关文章推荐
- 程序员面试金典——解题总结: 9.17中等难题 17.12设计一个算法,找出数组中两数之和为指定值的所有整数对。
- 程序员面试金典——解题总结: 9.17中等难题 17.9设计一个方法,找出任意指定单词在一本书中的出现频率
- 程序员面试金典——解题总结: 9.17中等难题 17.8给定一个整数数组(有正数有负数),找出总和最大的连续数列,并返回总和
- 程序员面试金典——解题总结: 9.17中等难题 17.11给定rand5(),实现一个方法rand7()。也就是,给定一个产生0到4(含)随机数的方法,编写一个产生0到6(含)随机数的方法
- 程序员面试金典——解题总结: 9.17中等难题 17.6给定一个整数数组,编写一个函数,找出索引m和n,只要将m和n之间的元素排好序,整个数组就是有序的。注意:n - m越小越好,也就是说,找出
- 程序员面试金典——解题总结: 9.17中等难题 17.7给定一个整数,打印该整数的英文描述(例如 "One Thousand,Two Hundred-Thirty Four")
- 程序员面试金典——解题总结: 9.17中等难题 17.1编写一个函数,不用临时变量,直接交换两个数
- 程序员面试金典——解题总结: 9.17中等难题 17.4编写一个方法,找出两个数字中最大的那一个。不得使用if-else或其他比较运算符。
- 请设计一个算法,计算n的阶乘有多少个尾随零。 给定一个int n,请返回n的阶乘的尾零个数。保证n为正整数
- 程序员面试金典——解题总结: 9.17中等难题 17.2判断井字游戏中某个玩家是否赢了游戏
- 程序员面试金典——解题总结: 9.17中等难题 17.14句子分割
- 程序员面试金典——解题总结: 9.18高难度题 18.13给定一份几百万个单词的清单,设计一个算法,创建由字母组成的最大矩形
- 程序员面试金典——解题总结: 9.17中等难题 17.5珠玑妙算游戏
- 程序员面试金典——解题总结: 9.17中等难题 17.13将二叉查找树转换为双向链表
- 程序员面试金典——解题总结: 9.18高难度题 18.11给定一个方阵,其中每个单元(像素)非黑即白。设计一个算法,找出四条边都是黑色像素的最大子方阵。
- 程序员面试金典——解题总结: 9.18高难度题 18.6设计一个算法,给定10亿数字,找出最小的100万个数字。假定计算机内存足以容纳全部10亿个数字。
- 程序员面试金典——解题总结: 9.18高难度题 18.8给定一个字符串s和一个包含较短字符串的数组T,设计一个方法,根据T中的每一个较短字符串,对s进行搜索
- CareerCup 17中等难题 Q17.3 阶乘尾随零个数
- 设计一个算法,计算出n阶乘中尾部零的个数
- 程序员面试金典——解题总结: 9.18高难度题 18.8---拓展: 实现一个Trie树