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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© Orangeapp 中级黑马   /  2015-9-27 22:39  /  418 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

求1000!的结果中包含多少个0      1000! = 1×2×3×4×5×...×999×1000
各位大神来个解题的思路呗!!!

5 个回复

倒序浏览
没有想明白
回复 使用道具 举报
回复 使用道具 举报
本帖最后由 朦胧色彩 于 2015-9-28 12:15 编辑

用数组来保存结果
  1. class Test
  2. {
  3.     public static void main(String[] args)
  4.     {

  5.         //求1000!,就是1*2*3*4*5*....*1000

  6.         int[] arr = new int[1000000];// 存储1000!的结果,我想1000000位足够了吧
  7.         arr[1] = 1;
  8.         int numindex = 1;// 求出来值的是多少位数

  9.         for(int i = 1; i <= 1000; i++)
  10.         {
  11.             for(int j = 1; j <= numindex; j++)
  12.                 arr[j] *= i;
  13.             
  14.             // 判断每一位是不是大于等于10,是的话往前就进1
  15.             for(int k = 1; k < numindex; k++)
  16.                 if(arr[k] >= 10)
  17.                 {
  18.                     arr[k+1] += arr[k] / 10;
  19.                     arr[k] %= 10;
  20.                 }

  21.             // 最高位也不得>=10
  22.             while(arr[numindex] >= 10)
  23.             {
  24.                 arr[numindex + 1] += arr[numindex] / 10;
  25.                 arr[numindex] %= 10;
  26.                 numindex++;
  27.             }
  28.         }

  29.         int counts = 0;
  30.         // 从最高位往后打,判断如果是0就+1
  31.         for (int k = numindex; k >= 1; k--) {
  32.             if(arr[k]==0)
  33.                 counts++;
  34.         }
  35.         System.out.println(counts);
  36.     }
  37. }
复制代码
回复 使用道具 举报
我的想法是遍历1-1000,找到被2、5整除的数
回复 使用道具 举报
感叹号不是非的意思吗
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马