求N^N最高位,阶乘最高位
求n^n
和n!
的最高位数,核心思想就是取10为底的对数推公式
在求n!
时,还要用到斯特林公式 来求n!
的近似值。
N^N最高位
n^n
的位数:k = [lg(n^n)]+1 = [n*lg(n)]
最高位数作个位:x = n^n/10^(k-1)
取对数:lg(x) = n*lg(n)-(k-1) = (n*lg(n)-[n*lg(n)])
最高位数:[x] = [10^lg(x)] = [10^(n*lg(n)-[n*lg(n)])]
推广:求第x高位只要推公式时将10^(k-1)
变为10^(k-x)
即可,最后答案取模10。
n!最高位
n!
的位数:k = [lg(n!)]+1
最高位数作个位:x = n!/10^(k-1)
取对数:lg(x) = lg(n!)-(k-1) = lg(n!)-[lg(n!)]
最高位数:[x] = [10^lg(x)] = [