对数在算法题目中的应用

本文探讨了对数在解决算法问题时的重要性,特别是针对计算阶乘位数的题目。通过利用对数的性质,可以避免直接进行大量乘法和除法运算,显著提升计算效率。对数的应用不仅简化了代码,还减少了时间和空间复杂度,强调了程序员在编程时应考虑效率问题,不应过度依赖计算机资源。
摘要由CSDN通过智能技术生成

1.对数的性质

(1) alogab=b

(2) logaa=1

(3) loga(M*N)=logaM+logaN

(4) loga(M÷N)=logaM-logaN

(5) loga(Mn)=nlogaM

(6) logaM1/n=logaM/n

(7) logab*logba=1

2. 相关题目

(1) 求 N ! (1 <= N <= 5000)中有多少位数字。

若直接求 N ! 的结果,然后再计算有多少位数字,也是可行的,因为是大数阶乘,所以要用数组来计算,会用到大量的乘法除法取余运算,时间空间花费都比较大。

用对数的性质来解这个题是最佳的选择。

首先我们知道 看一个数字有多少位就是看它是10的几次幂,如101有2位,102 有3位。。。

也就是 10x(k=<x<k+1,k为整数,x为浮点数),则 10x的结果就有k+1位数字。

那也就是我们要求log10( N ! )

log10

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值