`
xuluan
  • 浏览: 11312 次
  • 性别: Icon_minigender_1
社区版块
存档分类
最新评论

阶乘之和

阅读更多

输入n,计算S = 1! + 2! + 3! + ...... + n!的末6位(不含前导0)。 n <= 10^6

样例输入:10

样例输出:37913

 

分析:此题需要注意溢出和时间的问题

溢出解决方案:要计算加法、减法和乘法的整数表达式除以正整数n的余数,可以再每步计算之后对n取余,结果不变。(原理:(a + b) % n = a % n + b % n)

n很大时,时间长的解决方案:注意到25!的阶乘有末尾6个0,则有(a + b) % n = a % n。也就说如果n大于24就相当于只计算n为24。(有兴趣的,可以尝试下没有优化前需要花多长时间)

#include<stdio.h>
#include<time.h> 
int main(){
	int n,sum = 0;
	const int MOD = 1000000;
	
 	scanf("%d",&n);
 	if(n > 24){
	 	n = 24;
	 } 
 	for(int i = 1; i <= n; i++){
		int factorial = 1;
		for(int j = 1; j <= i; j++){
			factorial = (factorial * j % MOD);	
		}
		sum += factorial;
 	}
 	printf("%d\n",sum % MOD);
 	printf("Time used=%.2lf\n",(double)clock()/CLOCKS_PER_SEC); 
	return 0;
} 

 去掉

if(n > 24){
	 	n = 24;
	 } 

 就可以测试没有优化前需要花多长时间

优化前与优化后的对比(单位s):

 

  • 大小: 13.5 KB
分享到:
评论

相关推荐

    阶乘之和cpp

    1至n各自阶乘之和,适宜初学者代码使用,并非最优仅供参考,谢谢合作

    vb求阶乘之和 源代码

    在VB(Visual Basic)编程语言中,"求阶乘之和"是一个常见的数学问题,它涉及到阶乘计算和序列求和。阶乘是指一个正整数n的所有小于等于n的正整数的乘积,通常表示为n!。例如,5的阶乘是5 × 4 × 3 × 2 × 1 = 120...

    P1009 [NOIP1998 普及组] 阶乘之和(c++)(csdn)————程序.pdf

    本题目是关于计算阶乘之和的问题,主要涉及到高精度计算,包括高精度加法和乘法的实现。以下是对这些知识点的详细解释: 1. **高精度计算**:在计算机中,标准的数据类型如int、long等有固定的存储长度,无法直接...

    C语言练习题:求1到10的阶乘之和简单实例

    C语言练习题:求1到10的阶乘之和简单实例 #include int factorial(int n) { if(0==n) return 1; if(1==n) return 1; return n*factorial(n-1); } int main() { int n=10; int sum=0; int i; for(i=1;i&lt;=n...

    17110之内的 数阶乘及阶乘之和计算程序

    可以精确计算 1到 17110之间所有数的阶乘,和阶乘之和,用c语言实现

    1至n各自阶乘之和

    1至n各自阶乘之和,适宜初学者代码使用,并非最优仅供参考,谢谢合作

    20的阶乘之和

    运用数组计算阶乘和

    求各个阶乘之和,阶乘的倒数之和

    求各个阶乘之和,阶乘的倒数之和,求各个阶乘之和,阶乘的倒数之和

    阶乘之和_C语言_

    本文将深入探讨如何使用C语言来实现阶乘之和的计算,并通过实例代码进行解析。 首先,我们需要理解“阶乘”(Factorial)的概念。阶乘是一个正整数n的所有小于等于n的正整数的乘积,通常用"!"表示。例如,5!(5的...

    求数字阶乘之和(1!+2!+3!+...+10!)

    可以任意输入开始数字和结束数字,能求得起止数字间的阶乘之和

    1到20的阶乘之和

    做一个小的程序,简单的把计算数字用计算机完成

    1091 求阶乘的和.cpp

    1091:求阶乘的和 时间限制: 1000 ms 内存限制: 65536 KB 提交数: 22935 通过数: 17332 【题目描述】 给定正整数n,求不大于n的正整数的阶乘的和(即求1!+2!+3!+...+n!),输出阶乘的和。 【输入】 输入有一行,...

    java程序关于计算1到20 的阶乘的和

    此java程序时计算1到20 的阶乘的和,即1!+2+3!+4!+5!+6!+7!.......19!+20! 如果你稍微改下就可以只算阶乘!

    python爱心代码高级-3.阶乘之和-但是大.py

    python爱心代码高级-3.阶乘之和——但是大.py

    阶乘及阶乘和的两种编法

    阶乘和则是指一系列正整数的阶乘之和。如果我们将1到n的所有正整数的阶乘相加,得到的就是n的阶乘和。例如,当n=3时,阶乘和为1! + 2! + 3! = 1 + 2 + 6 = 9。 在编程中,我们可以使用两种基本方法来计算阶乘和: ...

    c语言 计算阶乘之和.c

    c语言 计算1!+2!+...+n!

    嵌套调用求阶乘和_C语言_嵌套调用_

    本主题将深入探讨如何使用C语言通过嵌套调用来计算阶乘。 阶乘是一个数学概念,表示一个正整数n的所有小于等于n的正整数的乘积,通常表示为n!。例如,5! = 5 × 4 × 3 × 2 × 1 = 120。在程序设计中,我们通常会...

    1到n的阶乘求和

    阶乘求和是一个在计算机科学和数学中常见的问题,它涉及到序列的计算和求和。在本问题中,我们关注的是从1到n的所有整数的阶乘的总和。阶乘是一个数与小于等于它的所有正整数的乘积,表示为n!。例如,5! = 5 × 4 ×...

    一到十的阶乘和.PHP

    初学者可以多找一点类似于这种练习题做做,本题是我们老师发的标准答案,计算一到十的阶乘和

Global site tag (gtag.js) - Google Analytics