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 sys
from functools import reduce
n = 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~~

SPOJ Python Day2: Small factorials,布布扣,bubuko.com

SPOJ Python Day2: Small factorials

上一篇:Android 判断SD卡是否存在及容量查询


下一篇:Android 开发技巧总结