我目前被困在一项任务中,几乎到处都在寻找我正在尝试做的事情的线索。
赋值很简单,我们将得到一个 vector 形式的二进制数(例如 [1,1,1,1],我们将计算该数的十进制形式并放回相同的 vector 形式(例如 [1,5] 用于回答上一个示例)。
虽然起初我认为这是一个简单的解决方案,但我很快发现我们要使用这种方法来计算非常大的数字,例如二进制中的 300 个 1。
现在,在我意识到我试图直接计算它的错误之后,我很快找到了“分而治之”方法的想法,但我没有找到一个地方给出如何在这个中使用它的精确示例上下文。
由于这是一项作业,我宁愿提出一个实际解释概念并提供示例的答案,而不是直接的代码块。
提前谢谢你,
马修
最佳答案
编写一个以 10 为基数的数学引擎。
它应该包括与另一个以 10 为底的数字的加法,以及与 int
的乘法。 (加倍就足够了)
遍历二进制数字,跟踪与该数字对应的以 10 为底的数字。
有条件地积累。
唯一困难的部分是 base 10 数学系统,其他一切都需要 3 到 8 行代码。
遗憾的是,能够更有效地做到这一点的简单方法非常有限,因为二进制数的任何数字都可以影响等效的以 10 为底的数字的任何数字。可能有奇特的方法,但对于 300 位数字你不应该费心。
关于c++ - 使用分而治之法将二进制转换为十进制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18879222/