从1到n的阶乘的和(python)

今天在百度上逛一些ctf的平台,偶然发现一道编程题,于是乎,便用我刚刚学的python知识解了这道题

题目的描述是这样的:

计算1!+2!+3!+...+6666!后五位。

这个计算量很大啊,我还是用传统方法,让计算机算吧

这里是代码:

 1 #-*- coding:utf-8 -*-
 2 #计算1!+2!+3!+......+n!
 3 import sys
 4
 5 def fact(x):
 6     result = 1
 7     for i in xrange(2,x+1):
 8         result *= i
 9     return result
10
11 def end_result(n):
12     result1 = 0
13     for i in xrange(1,n+1):
14         result1 += fact(i)
15     return result1
16
17 if __name__ == ‘__main__‘:
18     num = int(sys.argv[1])
19     print end_result(num)

不得不说python的强大,这么长的数据都能列出来

时间: 2024-10-13 22:52:21

从1到n的阶乘的和(python)的相关文章

Python3 实例(二)

Python 判断字符串是否为数字 以下实例通过创建自定义函数 is_number() 方法来判断字符串是否为数字: 实例(Python 3.0+) -- coding: UTF-8 -- Filename : test.py author by : www.runoob.com def is_number(s):try: float(s)return Trueexcept ValueError: pass try: import unicodedata unicodedata.numeric(

Python3 实例

Python 判断字符串是否为数字 以下实例通过创建自定义函数 is_number() 方法来判断字符串是否为数字: 实例(Python 3.0+) # -*- coding: UTF-8 -*-# Filename : test.py# author by : www.runoob.comdef is_number(s): try: float(s) return True except ValueError: pass try: import unicodedata unicodedata.

算法-计算阶乘n!末尾0的个数

算法逻辑转载自计算阶乘n!末尾0的个数: 问题描述    给定参数n(n为正整数),请计算n的阶乘n!末尾所含有"0"的个数.    例如,5!=120,其末尾所含有的"0"的个数为1:10!= 3628800,其末尾所含有的"0"的个数为2:20!= 2432902008176640000,其末尾所含有的"0"的个数为4. 计算公式    这里先给出其计算公式,后面给出推导过程.    令f(x)表示正整数x末尾所含有的&q

1003 阶乘后面0的数量

1003 阶乘后面0的数量 基准时间限制:1 秒 空间限制:131072 KB 分值: 5 难度:1级算法题 n的阶乘后面有多少个0? 6的阶乘 = 1*2*3*4*5*6 = 720,720后面有1个0. Input 一个数N(1 <= N <= 10^9) Output 输出0的数量 Input示例 5 Output示例 1其实只要循环除五就可以找到规律,其实也可以证明出来. 1 #include <iostream> 2 #include <cstdio> 3 #

高精度运算-阶乘累积求和

# include <stdio.h> # include <math.h> # define N 66 int main(){ int s[N] = {0}, a[N] = {0};// s累加和,a累积求阶乘 int i,j,k,n,digit=1; //digit代表的是数字的位数 scanf("%d",&n); a[0]=1; s[0]=1; if(n==1)// 如果是1,阶乘和就是1,直接输出 printf("%d",s[

关于阶乘

描述:给定两个数n,m,其中m是一个素数. 将n(0<=n<=2^31)的阶乘分解质因数,求其中有多少个m. 注:^为求幂符号. 输入: 第一行是一个整数s(0<s<=100),表示测试数据的组数 随后的s行, 每行有两个整数n,m. 输出: 输出m的个数 样例输入 3 100 5 16 2 1000000000 13 样例输出 24 15 83333329 当n,m体量很小的时候,用这个代码就可以AC: 1 #include <iostream> 2 using na

XDU1019 阶乘因子的个数

题意是让你求一个最小的N, 使得N!有M个0,N的阶乘中2的因子是远多于5的因子的个数, 因此我们统计出5的个数就知道其后面有几个0,对于一个数mid, mid!中5的因子的个数为mid/5 + mid/25 + mid/5^3 + ... 可以发现mid越大mid!中的5的个数越多, 因此我们可以二分答案, 代码如下: #include <cstdio> #include <cstring> #include <algorithm> #include <iost

阶乘的精确值

问题描述:输入不超过1000的正整数,输出n!=1*2*3*...*n的结果 1000!约等于4*10^2567 所以设置数组的最大范围为3000 并采用逆序表示 eg: 123000  因为是逆序 所以输出321 1.java import java.util.Arrays; import java.util.Scanner;/** * 阶乘的精确值 * @author NEU-2015 * */ public class Demo { public static void main(Stri

51nod 1435 位数阶乘

1435 位数阶乘 题目来源: CodeForces 基准时间限制:1 秒 空间限制:131072 KB 分值: 40 难度:4级算法题  收藏  关注 X是一个n位数的正整数 (x=a0a1...an−1) 现在定义 F(x)=∏i=0n−1(ai!)  , 比如F(135)=1!*3!*5!=720. 我们给定一个n位数的整数X(至少有一位数大于1,X中可能有前导0), 然后我们去找一个正整数(s)符合以下条件: 1.这个数尽可能大, 2.这个数中不能含有数字0或1. 3.F(s)=F(x)

4.n的高精度阶乘---优化

题目:对于每组测试数据,在一行中给出一非负整数n(n小于等于100) 样例输入 3 5 10 样例输出 6 120 3628800 超时的代码如下:#include <iostream>#include <cstring>using namespace std; int main(){    int n, count = 0;    int a[100] = {1};    cin >> n;    if(n == 0){        cout << 1;