快速高精度进制转换
  • 板块学术版
  • 楼主cxyMOI
  • 当前回复3
  • 已保存回复3
  • 发布时间2024/6/8 07:31
  • 上次更新2024/6/8 11:22:57
查看原帖
快速高精度进制转换
799772
cxyMOI楼主2024/6/8 07:31

给定常数 bb 和 BB,要把一个 bb 进制 nn 位的高精度数转成 BB 进制。

普通方法每一位需要做一次 O(n)O(n) 的高精度乘法,所以时间复杂度是 O(n2)O(n^2)。

有 O(nlog⁡2n)O(n\log^2 n) 的算法:每轮循环对所有 kk 将 2k−12k-1 位与 2k2k 位合并放到第 kk 位上,这样一共进行 O(log⁡n)O(\log n) 轮。第 ii 轮要计算 O(n2i)O(\frac{n}{2^i}) 个 O(2i)O(2^i) 位数乘以同样是 O(2i)O(2^i) 位的 b2ib^{2^i},所以时间是 O(n2i)⋅O(2ii)=O(ni)O(\frac{n}{2^i})\cdot O(2^ii)=O(ni)。于是总复杂度 O(nlog⁡2n)O(n\log^2 n)。

有没有复杂度更低或常数更小的算法?

2024/6/8 07:31
加载中...