10進数を3進数に変更する方法はありますか?つまり、モジュロと除算の方法を使用したくないということです。10進数が非常に大きく、128123832812381835828638486384863486.............1237127317237などです。
また、bigintsを使用したくない。
方法はありますか?
除算/モジュロを使用する必要はありません。代わりに、低い値から高い値まで、入力数字を反復処理します。各桁位置について、最初1000....000
に出力表現の内容を計算します (前の 10 の累乗の 10 倍です)。次に、その結果に数字を掛けて、出力表現に累積します。
出力表現で乗算と加算を実行するルーチンが必要になります。乗算ルーチンは、加算ルーチンの観点から記述できます。
例:
246 (base-10) を base-3 に変換します。
出力 "accumulator" を初期化することから始めますa = "0"
。
「乗数」を初期化しm = "1"
ます。
"101"
出力表現に10 があることにも注意してください。
最初の桁は 6ですd = "20"
。
t = d * m = "20" * "1" = "20"
.a = a + t = "0" + "20" = "20"
.m = m * "101" = "1" * "101" = "101"
。2 桁目は 4ですd = "11"
。
t = d * m = "11" * "101" = "1111"
.a = a + t = "20" + "1111" = "1201"
.m = m * "101" = "101" * "101" = "10201"
。3 桁目は 2ですd = "2"
。
t = d * m = "2" * "10201" = "21102"
.a = a + t = "1201" + "21102" = "100010"
.答えは"100010"
です。