1、统计参与阶乘的所有数字中包含数字5的个数将数字相乘分解为质数相乘后可发现,尾部出现0的唯一条件就是包含2*5这一运算,每一个2忮氽阝另*5会在结果尾部产生一个0,而对于多个连续数字,2出现的概率远高于5,因此我们只要统计相乘的所有数字包含5这个因子的个数即可。
2、编写并运行测试方法图示,主方法中,调用该算法获取指定数字阶乘结果尾部0的个数,并打印到控制台,输出结果准确
3、时间复杂度分析,并在平台提交算法该算法使用了嵌套循环,综合时间复杂度为 O(nlogn) , 超出约束条件,平台提交算法,某些用例报超时错误(图示)。
4、改进算法从数学运算的角度分析这个题目,可以发现,阶乘运算中,每隔5个数,结果尾部会多一个0,每隔25个数,再额外多一个0,每隔125个数,再额外多一个0.....依次类推,改进算法如图示。
5、改进算法时间复杂度分析并测试算法结果改进算法的时间复杂度为 O(logn), 符合题目约束。图示,主方法中获取指定数字阶乘结果尾部0的个数,并将结果输出到控制台。
6、平台提交改进算法图示,该算法通过用例测试,算法性能也合格。