7-Java-A-1-阶乘位数

淺唱寂寞╮ 提交于 2020-02-01 05:07:03

阶乘位数

9的阶乘等于:362880
它的二进制表示为:1011000100110000000
这个数字共有19位。

请你计算,9999 的阶乘的二进制表示一共有多少位?

注意:需要提交的是一个整数,不要填写任何无关内容(比如说明解释等)

import math
num=0
for i in range(1,10000):
    num=num+math.log2(i)   
print(int(num+1))

答案:118445

参考:

我们不直接估计n!,而是考虑它的自然对数:

   ln(n!) = ln 1 + ln 2 + ... + ln n.

按一般方法计算N的阶乘,其时间复杂度为O(N):    
    N!= 1 * 2 * 3 * 4 * 5 * ............ * N;

如果要计算N后得到的数字为几位数,则我们可以知道其位数等于lgN!+1;

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!