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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

  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!太大了,根本存不下。
求提供个其他方法或思路

7 个回复

正序浏览
使用数组来存储结果,结果的每一位存到数组中,做起来有些技巧,向你推荐一本书 <<算法竞赛入门经典完整版>>,关于本题有一个非常好的解答。。。
回复 使用道具 举报
用二楼说的BigInteger,或者你去学习学习模拟算法
回复 使用道具 举报
来收经验,,这个我也遇到过
回复 使用道具 举报
来学习经验
回复 使用道具 举报
学习了  这个用的少。
回复 使用道具 举报
1楼正解
回复 使用道具 举报
用 BigInteger来定义
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马