博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
算法——172、阶乘后的零(力扣)
阅读量:635 次
发布时间:2019-03-14

本文共 934 字,大约阅读时间需要 3 分钟。

第一种思路:每一次求阶乘,截断最后面的零,取最后面的一部分,这种方法有很大的偶然性,不适合一般计算,下面的 sum %= 10000 是小编疯狂的提交最后的出来的结论,仅对此题有效。

class Solution {
public: int trailingZeroes(int n) {
int sum = 1, target = 0; while(n >= 1) {
sum *= n; --n; while(sum % 10 == 0) {
sum /= 10; ++target; } sum %= 10000; } return target; }};

一般性算法:在求 阶乘的过程中,只要末尾出现了 2 * 5 的组合,那么必然会出现一个 零,例如 4 * 5, 8 * 25,等等等等,而对于每一个 5来说,中间至少会有 2、4 三个 2 ,所以我们只需要统计 5 因子在所有数中出现的情况就可以了。

class Solution {
public: int trailingZeroes(int n) {
int sum = 0; for(int i = 1; i <= n; ++i) {
if(i % 5 == 0) {
int j = i; do {
++sum; j /= 5; }while(j % 5 == 0); } } return sum; }};

转载地址:http://cfeoz.baihongyu.com/

你可能感兴趣的文章