通常、入力を読み終わる前に書き始めることができます。しかし、数値が 10 の累乗に非常に近い場合、出力の最初の桁を書き込む前に、入力の半分以上を読み取らなければならない場合があります。
その理由を理解するために、比較的小さな例を取り上げます。数が 10 60であるとします。これの 16 進エンコードは 50 桁の 16 進数です。最初の 34 桁を読むと、次のことがわかります。
9f4f2726179a224501d762422c946590d9................
ドットは、まだ読んでいない数字です。
この時点では、出力の最初の桁をまだ書き込めません。
9f4f2726179a224501d762422c946590d90000000000000000
に
9f4f2726179a224501d762422c946590d9ffffffffffffffff
And the former is decimal 999999999999999999999999999999999999999998847078495393153024, but the latter is 1000000000000000000000000000000000000000017293822569102704639. So you still don't know whether to write a 1 or a 9! 35 番目の入力桁まで、出力の書き込みを開始できません。
一般に、最悪の場合、最初の出力桁を書き込む前に、入力の約 4 分の 3 を読み取る必要があります。