首页 > 代码库 > SPOJ Python Day2: Small factorials

SPOJ Python Day2: Small factorials

24. Small factorials

这题目非常简单,求“小整数(1-100)”的阶乘。题目规定了时间和程序大小。

所以能想到的最简单的循环,递归,和全算出来查表都是不行的。

正确的方法的算法,如这个博客所示,写的非常清楚了,数组进位法:

http://www.open-open.com/home/space-135360-do-blog-id-9620.html

作者的例子举的也非常清晰。

但是。。。神奇的python有reduce函数,我也惊讶这个函数算阶乘这么快,直接可以AC。。。

#!/usr/bin/python# -*- coding: utf-8 -*-import sysfrom functools import reducen = int(sys.stdin.readline())for i in range(1, n+1):    num = int(sys.stdin.readline().strip())    if num == 0:        print 1    if num == 1:        print 1    else:        factorial = reduce(lambda x,y: x*y, range(1, num + 1))        print factorial

再贴一个reduce函数的用法的博客地址:http://blog.sina.com.cn/s/blog_798f21a00100wnrl.html

Mission Success~~