zoukankan      html  css  js  c++  java
  • 求n的阶乘中尾数有多少个0

    给出一个数n,求1*2*3*...*n的结果中,尾数有多少个0

    这道题是一个老友跟我说是面试的题目,现在认真想一下,好像挺简单的^_^

    分析:求几个数的乘积,如果尾数为零,那么这几个数要满足的条件是:1)这几个数中有偶数;2)这几个数中包含5(包括可以分解出来的,比如整十, 2n*5)

    e.g:

    10的阶乘,1-10这几个数,里面包含偶数,也包含了两个5(5,2*5),尾数有两个0;1-15中,包含偶数和3个5(5, 2*5, 3*5),尾数有3个0

    ======>这一堆数中,包含了多少个5,尾数就有多少个0(因为是连续的,5的前面必定有2、4这两个偶数,所以乘积的末尾肯定有一个0)

    -----------------------------------------

    所以求解就变得很简单了。

    public class Main {
        public static void main(String[] args) {
            Scanner sc = new Scanner(System.in);
            int n ;
            while((n =sc.nextInt() ) != 0) {
                int res = countOfZero(n);
                System.out.println(res);
            }    
        }
        
        public static int countOfZero(int k) {
            int count = 0;
            for(int i = 1; i <= k; i++) {
                if(i % 5 == 0) {
                    int temp = i;
                    while(temp % 5 == 0) {
                        count++;
                        temp /= 5;
                    }
                }
            }
            return count;
        }
    }
  • 相关阅读:
    python 读写XLS
    python去噪算法
    编译freetype 的dll
    python生成测试图片
    python 将pdf分页后插入至word中
    ie height
    Formview单文档或对话框项目接受不到按键消息的解决办法
    SQL SERVER配置[转]
    PyQt5 布局
    PyQt5 各种菜单实现
  • 原文地址:https://www.cnblogs.com/WakingShaw/p/13370056.html
Copyright © 2011-2022 走看看