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

时间: 2024-08-01 14:12:55

SPOJ Python Day2: Small factorials的相关文章

SPOJ Python Day2: Prime Generator

2. Prime Generator 任务很简单,生成m到n之间的所有质数.一个比较常见的思路是: 自然数$1, 2, -, N$中的最大的质因子要小于$\sqrt{N}$.所以用m到n中的每一个数去试除1到$\sqrt{n}$中的所有数.能整除就是合数,全不能整除就是质数. 但是这么做会超时.. 一般生成质数有一个常用的算法:筛法 http://zh.wikipedia.org/wiki/%E5%9F%83%E6%8B%89%E6%89%98%E6%96%AF%E7%89%B9%E5%B0%B

SPOJ Python DAY1: Life, the Universe, and Everything

博主学统计的,学编程多属自学,且入门角度刁钻.用了3年R,深感有掌握一门外语的必要.最近把自己强力掰弯到Python上来,加之自己算法,数据结构学的也十分业余,故拿SPOJ练练手. 刷题之旅开始了... 1. Life, the Universe, and Everything 题目用的是STAR TREK 的梗,题目本身很简单,个人觉得也比通常OJ中a+b的开头更有趣些.就是打印输入的整数,遇42停. ##### Filename: SPOJ_1 ##### # Life, the Unive

SPOJ Python Day1: Adding Reversed Numbers

水题就要水的滴水不漏=-=,第一个疗程博主决定按照SPOJ提交人数的顺序开始刷,主要任务在于熟悉Python. 42. Adding Reversed Numbers 题目非常简单 Sample input: 3 24 1 4358 754 305 794 第一行是下面输入的行数,主要说的事儿是把第一个数反过来,第二个数反过来,然后加一起,然后再把他们的和反过来.比如说24 1 这行吧: Step 1:24 –> 42, 1 –> 1 Step 2:42+1 = 43 Step 3:43 –&

SPOJ Python Day1: Factorial

11. Factorial 这个题同样非常简单,就是求一个数的阶乘的尾部有多少个0. 思路是有2*5才会出0,然后2肯定比5多,所以就是数N!中有多少个因子5. 关于如何数出因子5的个数中http://www.chinaunix.net/old_jh/23/926848.html这篇文章介绍的非常详细.我就不谈了,不过想说写程序和算法是两个非常不同的工作,我现在的目标是,大概看一下前人的成法,主要完成编程工作. 最终推出的计算公式为: 当$0 < n < 5$时,$f(n!) = 0$; 当$

python day2

模块初识 模块也可以叫库,前面用的getpass就是一个模块.模块分两种,一种是标准模块,一种是第三方模块. 备注:py文件名不能和import导入的模块名一样,切记 1.sys模块 sys.path  python的path环境变量 import sys print(sys.path) 执行结果: "C:\Program Files\Python35\python.exe" "E:/py/py_cmr/day 2/sys_mod.py" ['E:\\py\\py_

Python day2 ---python基础2

本节内容 列表. 元组操作 购物车程序 字符串操作 字典操作 3级菜单 作业(购物车优化) 1. 列表操作 1.定义列表names = ['Alex',"Tenglan",'Eric'] 2.追加 3.插入 4.修改 5.打印元素 6.切片        7.索引(获取下标) 和统计 8.删除 和 清除         9.翻转和排序 10.扩展 11.Copy 12.浅copy ,深copy 13.循环,打印列表 14.步长切片 2.元组操作 元组其实跟列表差不多,也是存一组数,只不

Python Day2 基础 操作文件流

1.列表.元组 操作                                                                    推荐书籍    追风筝的人       白鹿原   琳达看美国 2.字符串操作 3.字典操作 4.集合操作 5.文件操作 6.字符编码和转码 7.内置函数 列表,元祖 列表   name = [2,3,4,3]   name.copy()  浅copy        import copy      name2=cooy.deepndcopy

Python day2 基础 2

数据类型初识 1.数字 2 是一个整数的例子.长整数 不过是大一些的整数.3.23和52.3E-4是浮点数的例子.E标记表示10的幂.在这里,52.3E-4表示52.3 * 10-4.(-5+4j)和(2.3-4.6j)是复数的例子,其中-5,4为实数,j为虚数,数学中表示复数是什么?. int(整型) 在32位机器上,整数的位数为32位,取值范围为-2**31-2**31-1,即-2147483648-2147483647 在64位系统上,整数的位数为64位,取值范围为-2**63-2**63

开始学习python,day2

一丶 Python变量                                                                                           一丶 Python变量                                                                                            一丶 Python变量