华师一附中OI组

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 1205|回复: 1
打印 上一主题 下一主题

n!最右边第一个非零的数字是几

[复制链接]

738

主题

1485

帖子

5420

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
5420
跳转到指定楼层
楼主
发表于 2018-5-1 15:37:19 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
一般的做法是一边计算一边去0,但其实可以用规律的
回复

使用道具 举报

738

主题

1485

帖子

5420

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
5420
沙发
 楼主| 发表于 2018-5-1 15:40:11 | 只看该作者
假设是求100!末尾的最后非零数字
  1. s=1;
  2.     for (i=1;i<=n;i++)
  3.     {
  4.         s=s*i%10000; //最多一次只能出现2个零,保守一点搞4个
  5.         while (s%10==0) s=s/10; ///最后一位是0的话舍弃这些0.可能不止1个!
  6.     }
  7.     cout<<s%10<<endl; //为什么还要%10?
复制代码
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|服务支持:DZ动力|华师一附中OI组  

GMT+8, 2024-11-2 06:29 , Processed in 0.095616 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表