黑马程序员技术交流社区

标题: 1000的阶乘,这个数太大怎么处理 [打印本页]

作者: 放养的饼干    时间: 2015-7-4 20:43
标题: 1000的阶乘,这个数太大怎么处理
  1. /*求1000!的结果中包含多少个0?
  2.    注:1000! = 1×2×3×4×5×...×999×1000
  3.    思路:1、运用累加的思想来计算 x = 1×2×...×999×1000。
  4.        2、通过x%10==0来判断末尾是否为0。
  5.        3、通过x/10来进行十进制的降位操作。
  6. */
  7. public class Test9
  8. {
  9.         public static void main(String[] args)
  10.         {
  11.                 //计算1000!,因为担心数据溢出,我们用long类型来定义
  12.                 long product=1;
  13.                 for(long num=1;num<=10;num++)
  14.                 {
  15.                         product=product*num;
  16.                 }
  17.                 System.out.print(product);
  18.         }
  19. }
复制代码

题目和要求在代码的注释里,我的思路也在,可是刚码了没几个字就发现1000!太大了,根本存不下。
求提供个其他方法或思路
作者: lei200703    时间: 2015-7-6 17:40
用 BigInteger来定义

作者: ZhangHeng    时间: 2015-7-6 20:08
1楼正解
作者: limingdada    时间: 2015-7-6 22:23
学习了  这个用的少。
作者: 叫什么    时间: 2015-7-6 22:44
来学习经验
作者: 如初见    时间: 2015-7-6 22:46
来收经验,,这个我也遇到过
作者: Diors    时间: 2015-7-6 22:47
用二楼说的BigInteger,或者你去学习学习模拟算法
作者: micro_hx    时间: 2015-7-6 22:48
使用数组来存储结果,结果的每一位存到数组中,做起来有些技巧,向你推荐一本书 <<算法竞赛入门经典完整版>>,关于本题有一个非常好的解答。。。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2