免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: action08
打印 上一主题 下一主题

[算法] 从题目1000的阶方想到... ... [复制链接]

论坛徽章:
0
11 [报告]
发表于 2009-04-25 21:20 |只看该作者
http://www.physicsforums.com/archive/index.php/t-126744.html
http://en.wikipedia.org/wiki/Factorial

[ 本帖最后由 x2 于 2009-4-25 21:33 编辑 ]

论坛徽章:
0
12 [报告]
发表于 2009-04-25 21:38 |只看该作者
原帖由 x2 于 2009-4-25 20:43 发表
有没有人能看懂:n! = \Gamma(n+1) = \int_0^\infty t^n e^{-t} dt


latex代码

论坛徽章:
0
13 [报告]
发表于 2009-04-25 23:30 |只看该作者
原帖由 x2 于 2009-4-25 20:43 发表
有没有人能看懂:n! = \Gamma(n+1) = \int_0^\infty t^n e^{-t} dt


在 dt 之前插入一个 \, 效果会好一些。见 ``The TeXbook'' 第 18 章 ``Fine Points of Mathematics Typing''.

论坛徽章:
0
14 [报告]
发表于 2009-04-26 09:34 |只看该作者
记得前几天csdn上面也有人在讨论这个

当时有人用sql编程写了一个 耗时不到1s

论坛徽章:
0
15 [报告]
发表于 2009-04-26 11:39 |只看该作者

回复 #14 皇家救星 的帖子

1000! 用什么语言算都用不了 1s 吧?


  1. print reduce (lambda x, y:x*y, range(1,1001))
复制代码


real        0m0.082s
user        0m0.048s
sys        0m0.004s

论坛徽章:
0
16 [报告]
发表于 2009-04-26 19:58 |只看该作者
原帖由 retuor 于 2009-4-26 11:39 发表
1000! 用什么语言算都用不了 1s 吧?


print reduce (lambda x, y*y, range(1,1001))


real        0m0.082s
user        0m0.048s
sys        0m0.004s


这代码交上去,人家不认

论坛徽章:
0
17 [报告]
发表于 2009-04-27 09:05 |只看该作者
原帖由 retuor 于 2009-4-26 11:39 发表
1000! 用什么语言算都用不了 1s 吧?


print reduce (lambda x, y*y, range(1,1001))


real        0m0.082s
user        0m0.048s
sys        0m0.004s

就是1000!的定义

  1. (require-extension (srfi 1))
  2. (apply * (iota 1000 1))
复制代码

论坛徽章:
0
18 [报告]
发表于 2009-04-27 09:12 |只看该作者
原帖由 reiase 于 2009-4-26 19:58 发表


这代码交上去,人家不认

可能题目要求自己实现大数的乘法运算。

论坛徽章:
223
2022北京冬奥会纪念版徽章
日期:2015-08-10 16:30:32操作系统版块每日发帖之星
日期:2016-05-10 19:22:58操作系统版块每日发帖之星
日期:2016-02-18 06:20:00操作系统版块每日发帖之星
日期:2016-03-01 06:20:00操作系统版块每日发帖之星
日期:2016-03-02 06:20:0015-16赛季CBA联赛之上海
日期:2019-09-20 12:29:3219周年集字徽章-周
日期:2019-10-01 20:47:4815-16赛季CBA联赛之八一
日期:2020-10-23 18:30:5320周年集字徽章-20	
日期:2020-10-28 14:14:2615-16赛季CBA联赛之广夏
日期:2023-02-25 16:26:26CU十四周年纪念徽章
日期:2023-04-13 12:23:10操作系统版块每日发帖之星
日期:2016-05-10 19:22:58
19 [报告]
发表于 2009-04-27 09:50 |只看该作者

回复 #18 x2 的帖子

就是“自己实现大数的”意思,大家可以参考YZFY的
http://blog.pfan.cn/yzfy/25193.html


我还要继续研究,

比如,1x2x3....x1000会是个多少位的数,如果10000呢?
首先得考虑要选多少B(字节)来来存储它,


同时谢谢8楼的大虾给的参考资料

[ 本帖最后由 action08 于 2009-4-27 09:52 编辑 ]

论坛徽章:
0
20 [报告]
发表于 2009-04-27 12:01 |只看该作者
python 不认就用 c 写一个好了


  1. #include <stdio.h>

  2. unsigned long b=1000000000UL;
  3. unsigned long r[286];

  4. void
  5. factorial (long n, unsigned long *r)
  6. {
  7.     long i, j, d;
  8.     unsigned long c;
  9.     unsigned long long x;
  10.    

  11.     r[0]=1, d=0;
  12.     for (i=2; i<=n; i++)
  13.     {
  14.         c=0;
  15.         for (j=0; j<=d; j++)
  16.         {
  17.             x=(unsigned long long)r[j] * i+c;
  18.             r[j]=x%b;
  19.             c=x/b;
  20.         }
  21.         if (c!=0)
  22.         {
  23.             d++;
  24.             r[d]=c;
  25.         }
  26.     }
  27. }


  28. int
  29. main()
  30. {
  31.     int i;
  32.     factorial(1000, r);

  33.     printf ("%ld", r[285]);
  34.     for (i=284; i>=0; i--)
  35.         printf ("%09ld", r[i]);

  36. }
复制代码


402387260077093773543702433923003985......410970027753472000000000000000000000......0

real        0m0.019s
user        0m0.012s
sys        0m0.000s
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP