程序地带

HDU 1018求大数阶乘的位数


题目意思:给你个n( 1 ≤ n ≤ 10^7 ),求n!的位数 方法一: 一开始是用大数的阶乘方法求,结果超时了,这个方法求不出10^7这么大的阶乘,百度了一下后发现有公式直接求


int result[4000];
int h;//最高位
int factorial(int num){
memset(result,0,sizeof(result));
h = 1;
result[0] = 1;
for(int i=1;i<=num;i++){
int res = 0;
for(int j=0;j<h;j++){
int b = result[j]*i + res;
result[j] = b%10;
res = b/10;
}
while(res){
result[h++] = res%10;
res /= 10;
}
}
return h;
}

方法二: 斯特林公式 在这里插入图片描述 res = (int)(log10(sqrt(2PIn))+n*log10(n/e))+1


int Stirling(int n){//斯特拉公式
double PI = acos(-1);
double e = exp(1);
return (int)(log10(sqrt(2*PI*n))+n*log10(n/e))+1;
}

方法三: res = log10(N!)+1


int digit(int n){
double sum = 0;
for(int i=1;i<=n;i++){
sum += log10(i);
}
return (int)(sum+1);
}

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_45880043/article/details/112689540

随机推荐

动手学深度学习——5. 数据清洗

动手学深度学习——5. 数据清洗

动手学深度学习——5.数据清洗记录一下学习深度学习的一些。本篇简述如何使用cleanlab清洗分类数据所使用环境:Ubuntu16.048700KGeForceRTX1080TiPyth...

QWERDF007 阅读(874)

Spring之-bean注解

@Bean注解@bean注解是Spring中的一个重要注解,主要是用在方法上,将该方法发返回值注册成一个Bean,并加入到Spring中进行管...

久安0529 阅读(848)

线程同步方法

线程同步的方法1、使用synchronized获取对象互斥锁:这个最常用的的也是比较安全的一种方式,采用synchronized修饰符实现的同步机制叫做互斥锁机制ÿ...

久安0529 阅读(675)

字符流和字节流出现乱码问题

JavaWeb网页出现乱码问题在处理字符流和字节流输出中文乱码时,都采用response.setContentType(“test/hxml;charset=utf-8”);...

是jiao春呀 阅读(602)

tomcat9 配置 Https(部署SSL证书)

tomcat服务器配置https需要配置confserver.xml文件和confweb.xml文件步骤:准备SSL证书,我用的是jks格式证书(例如&#...

我好的不能再好了 阅读(406)

记录Looking for peers问题解决

启动私有链后不停出现LookingforpeersINFO[04-12|10:39:39.455]StartedP2Pnetworkingself=enode://...INFO[04-12|...

爵冥子 阅读(745)

遥感图像处理的一般流程

遥感图像处理的一般流程

第一步:数据源选择第二步:图像输入与浏览拿到数据之后要对数据源做出判断,主要有判断数据源是什么格式,什么类型,数据质量如何。这一步...

weixin_43955866 阅读(866)