1

このコードゴルフの質問には、英語で1から99までのすべての整数の長さを大きな数にエンコードするPythonの回答があります。

7886778663788677866389978897746775667552677566755267756675527886778663788677866355644553301220112001

の長さを取得するにはn、を計算する必要があります3 + (the_big_number / (10**n)) % 10。これはどのように作動しますか?

4

2 に答える 2

4

(the_big_number / (10^n)) % 10大きな数の最下位桁を引き出すnので、長さは右端の「ゼロ」(1 + 3 = 4)の長さから始まり、「99」の長さまで続くように格納されます。 (7 + 3 = 10)左端。

最短の英語の数字は3文字(「1」、「2」、「6」、「10」)であるため、各長さは3のオフセットで格納されます。100より前の最長の文字は9+3 = 12文字(「78」など)であるため、各数値を1桁で格納できます。

于 2010-07-14T19:17:25.997 に答える
2

右から:

  • 最初の桁は、「ゼロ」から3を引いた文字の数です。
  • 2桁目は、「1」に含まれる文字数から3を引いた数です。
  • 3桁目..。
  • ... 100桁は、「99」から3を引いた文字の数です。

最長の数字「77」は12文字しかないことに注意してください。これは、3を引いた後の1桁に収まるのが便利です。

于 2010-07-14T19:17:54.823 に答える