有人说阶乘计算很慢,确实,如果按照定义去计算,那么多次乘法是很慢的。但是事实上我们有现成的工具可用,比如伽玛函数,斯特林公式。其中gmp库中就有现成的gamma函数,所以大数的阶乘并不慢。import gmpy2from gmpy2 import mpzdef stirling(z): ...
                            
                            
                                分类:
其他好文   时间:
2015-04-28 13:33:59   
                                阅读次数:
120
                             
                    
                        
                            
                            
                                分析:经典的八数码问题,参考别人的代码写的,逆向广搜,把结果保存起来,之后在使用。
#include
#include
using namespace std;
#define STATE_COUNT 363000  //因为9!=362880
int fact[]={1,1,2,6,24,120,720,5040,40320,362880};  //0到9的阶乘,用来计算hash值
cha...
                            
                            
                                分类:
其他好文   时间:
2015-04-27 21:54:28   
                                阅读次数:
175
                             
                    
                        
                            
                            
                                描述给你一个非负数整数n,判断n是不是一些数(这些数不允许重复使用,且为正数)的阶乘之和,如9=1!+2!+3!,如果是,则输出Yes,否则输出No;输入第一行有一个整数0 2 int main() 3 { 4 int a[9]={1,2,6,24,120,720,5040,40320,36...
                            
                            
                                分类:
其他好文   时间:
2015-04-27 09:31:54   
                                阅读次数:
104
                             
                    
                        
                            
                            
                                class Program { // 要理解递归,先要理解递归. (这只是一句玩笑话 ) // 递归,顾名思义就是递来归去,如此反复,直到不符合某个条件. 而函数递归意思也就是函数调用函数自己. 下面用代码来示例: public int ji...
                            
                            
                                分类:
其他好文   时间:
2015-04-26 10:47:35   
                                阅读次数:
171
                             
                    
                        
                            
                            
                                【算法竞赛入门经典】阶乘的精确值问题描述输入不超过1000的正整数n,输出n! = 1x2x3x4x···xn的精确结果. 
样例输入:5
样例输出:120 
算法分析我们需要解决两个问题: 
怎么保存结果 
乘法过程是怎样的 
对于第一个问题:因为1000的阶乘是无法用整数保存的,用double也一样,它的位数会高达两千多位,保存阶乘值的位数,我们只能使用数组,这里使用一个大小为3000的数组;对...
                            
                            
                                分类:
编程语言   时间:
2015-04-24 19:15:36   
                                阅读次数:
151
                             
                    
                        
                            
                            
                                题目:
1.给定一个整数N,那么N的阶乘N!末尾有多少个0?如N=10,N!=3628800,N!的末尾有两个0;
2.求N!的二进制表示中最低位1的位置。
问题1解法一:
基本思想:
N!=K*10^M,那么N!末尾有M个0.
N!=2^X*3^Y*5^Z,M=min(X,Z)。因为X>=Z,所以M=Z。
计算i(i=1,2,---,N)的因为分解中5的指数,求和。
re...
                            
                            
                                分类:
其他好文   时间:
2015-04-24 16:26:48   
                                阅读次数:
124
                             
                    
                        
                            
                            
                                大数阶乘。代码比较简单。#include#include#define MAXN 25000 // 如果你的阶乘N比较大,建议大一点int result[MAXN];int main(){int i,j,n;scanf("%d",&n);// memset函数的作用将某一段内存设置成指定的值//.....
                            
                            
                                分类:
编程语言   时间:
2015-04-23 21:41:11   
                                阅读次数:
151
                             
                    
                        
                            
                            
                                求阶乘#include<stdio.h>
intfact(intn);
intmain()
{
	inti;
	printf("请输入要求阶乘的一个整数:");
	scanf("%d",&i);
	printf("%d的阶乘结果为:%d\n",i,fact(i));
	getch();
	return0;
}
intfact(intn)
{
	if(n<=1)
		return1;
	else
		returnn*fact(n-1);
}
                            
                            
                                分类:
其他好文   时间:
2015-04-23 18:00:58   
                                阅读次数:
122
                             
                    
                        
                            
                            
                                大数阶乘时间限制:3000ms | 内存限制:65535KB难度:3描述我们都知道如何计算一个数的阶乘,可是,如果这个数很大呢,我们该如何去计算它并输出它?输入输入一个整数m(0#include #include #define NUM 20000int main(char argc, char**...
                            
                            
                                分类:
其他好文   时间:
2015-04-20 23:52:36   
                                阅读次数:
143
                             
                    
                        
                            
                            
                                描述 N!阶乘是一个非常大的数,大家都知道计算公式是N!=N*(N-1)······*2*1.现在你的任务是计算出N!的位数有多少(十进制)?输入首行输入n,表示有多少组测试数据(n#include using namespace std;int normal(double n){ doubl...
                            
                            
                                分类:
其他好文   时间:
2015-04-20 12:48:24   
                                阅读次数:
106