回 帖 发 新 帖 刷新版面

主题:toj1016怎么做?

http://acm.tongji.edu.cn/showproblem.php?problem_id=1016

找n!的高第2位。。。*_*

回复列表 (共8个回复)

沙发

用n!≈sqrt(2*pi*n)*(n/e)^n计算即可

板凳

用实数,从1开始乘,超过100就不停地除以10(除到小于100为止),乘完之后取个位数.

另外,别忘了给我加30分~~~~~~~~~~~~~~

3 楼

boxertony, 知道了n!能怎样?
maxumi, 我用浮点数试了,不成功.

4 楼

用extended呀

5 楼

不需要计算出n!,只需要根据那个公式两边取对数,得到的数据取小数部分x,再计算10^x,它的第二位就是啦。更精确一点的公式是n!≈sqrt(2*pi*n)*(n/e)^n*(1+1/(12n)),并且只有当n>7才是准确的。

不知道有没有更快的方法。

6 楼

maxumi, extended似乎是pascal的类型吧.
boxertony,这个方法是哪来的?有没有资料?

7 楼

这个就是 stirling公式。在下面的网页有更详细的介绍:
http://mathworld.wolfram.com/StirlingsSeries.html

8 楼

嘿嘿,我当时还真是用浮点数硬乘出来AC的,呵呵~~

我来回复

您尚未登录,请登录后再回复。点此登录或注册