A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 原子弹 中级黑马   /  2014-3-25 21:50  /  1560 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

   !1000   1000的阶乘的末尾有多少个零!      不会做  求大神指教啊

评分

参与人数 1技术分 +1 收起 理由
朱神必 + 1

查看全部评分

3 个回复

倒序浏览
首先 结尾为零 且阶乘 因2*5=10 判断1000!里面数字有几对2 和5

/**
*
*/
/**
* @author Leslie
*
*/
public class test {
/**
  * @param args
  */
public static void main(String[] args) {
  // TODO Auto-generated method stub
  int num1=0; //被2整除
  int num2=0; //被5整除
  
  
  for(int i=1;i<=1000;i++){
   int num=i;
   while(num%2==0){ //判断被二整除的个数
    num1++;
    num/=2;
   }
   while(num%5==0){ //被五整除的个数
    num2++;
    num/=5;
   }
   
  }
  System.out.println(Math.min(num1, num2));
}
}

评分

参与人数 1技术分 +1 收起 理由
朱神必 + 1

查看全部评分

回复 使用道具 举报
我觉得这是一个规律题,,我刚刚算了一下,1-10的阶乘后面有两个零,到15就有三个,我只算到了15,后面就没有继续如果算不错的话到20应该有四个零,而这些零的出现与5有关。个人观点。不知道对不对。
回复 使用道具 举报
public class Test5 {

        //计算能够被n整除的个数
        static int getDiv(int n){
                int temp = 0;
                for(int i = 1; i <= 1000; i++){
                        if(i%n == 0){
                                temp++;
                        }
                }
                return temp;
        }
        public static void main(String[] args) {

                int n = 5;
                int num = 0;
                //遍历5,25,125,625……不超过1000
                for(int i = n; i <= 1000; i*=5){
                        num += getDiv(i);
                }
                System.out.println("!1000的末尾有"+num+"个零.");
        }
}

评分

参与人数 1技术分 +1 收起 理由
朱神必 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马