将非常大的n位数转换为十进制表示的复杂性是什么?
我的想法是重复整数除法的基本算法,取余数来得到每个数字,将具有O(M(n)log n)
复杂度,其中M(n)
是乘法算法的复杂性;然而,除法不是在2个n位数之间,而是1个n位数和一个小常数,所以在我看来复杂性可能更小。
答案 0 :(得分:1)
如您所述的朴素碱基转换需要二次时间;你做的是n
bigint-by-smallint分区,其中大部分时间都是n比特bigint大小的线性时间。
你可以在O(M(n)log(n))时间进行基本转换,但是,通过选择目标基数的功率大致是待转换数字的平方根,通过它进行除法和余数(可以通过牛顿方法在O(M(n))时间内完成,并在两半上进行递归。