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
时间: 2024-09-30 20:37:51