作者sbrhsieh (偶尔想摆烂一下)
看板Python
标题Re: [讨论] 提昇Python执行的速度
时间Sat Apr 10 15:31:36 2010
※ 引述《hsnu114444 (我只是QQ糖)》之铭言:
: 我最近在玩OnlineJudge
: 有一个网站叫做Sphere,他可以支援Python,
: 但是有一个小问题,就是因为他还支援别种语言,所以Time limit基本上没有设很宽。
: 我的题目是这样:
: 第一行输入总共有几个数字
: 接下来就读入N行
: 输出的结果是(input)!後面有几个零
: 阶层(factorial)
我在推文给的文章连结:
http://www.javaworld.com.tw/jute/post/view?bid=5&id=20842&sty=1&tpg=2&age=-1
(
http://ppt.cc/85qa)
主题是求 N! 从个位算来第一个不为零的数,和这一篇的要计算的目标不同,
但我想其中有一些概念可以用在这一篇的主题里。
N! 中会直接贡献 0 的有 10 的倍数,间接贡献的有 2 与 5 的倍数,朝这个方向
去解,应该不会比求尾数难。
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 218.173.135.32
1F:推 Feis:不停除 5 直到归 0. 把过程商数累加应该就可以了. 04/10 22:44
的确,10 的倍数包含在 2, 5 倍数的 case 里,而 1,2,...,N 中的 2 的倍数比 5
的倍数多,所以只要算 1,2,...,N 中所有 5 的 factor 个数即可知道 N! 的尾数
有几个零。(如推文所述,N 不停除 5 直到归 0. 把过程商数累加)
※ 编辑: sbrhsieh 来自: 218.173.135.32 (04/10 23:05)