2

有什么方法可以将十进制数更改为三进制数?我的意思是我不想使用模和除法,我有非常大的十进制数,比如 128123832812381835828638486384863486.............1237127317237 等等。

也不想使用 bigints。

有什么方法吗?

4

1 回答 1

4

您不必使用除法/模数。相反,迭代输入数字,从低到高。对于每个数字位置,首先计算1000....000输出表示中的内容(它是前一个 10 的幂的 10 倍)。然后将该结果乘以数字,并累积到输出表示中。

您将需要在输出表示中执行乘法和加法的例程。乘法例程可以写成加法例程。

例子:

将 246(base-10)转换为 base-3。

首先初始化输出“累加器” a = "0"

初始化“乘数” m = "1"

另请注意,10"101"在输出表示中。

第一个数字是 6,即d = "20"

  • 乘:t = d * m = "20" * "1" = "20"
  • 积累:a = a + t = "0" + "20" = "20"
  • 更新乘数:m = m * "101" = "1" * "101" = "101"

第二个数字是 4,即d = "11"

  • 乘:t = d * m = "11" * "101" = "1111"
  • 积累:a = a + t = "20" + "1111" = "1201"
  • 更新乘数:m = m * "101" = "101" * "101" = "10201"

第三个数字是 2,即d = "2"

  • 乘:t = d * m = "2" * "10201" = "21102"
  • 积累:a = a + t = "1201" + "21102" = "100010"

所以答案是"100010"

于 2011-04-29T15:33:55.493 回答