5

Project Euler の Web サイトでいくつかの問題を行っていて、問題に遭遇しました。この問題は、「次の 50 桁の数字 100 個の合計の最初の 10 桁を計算してください」と尋ねます。これを解決する数学的な方法があると思いますが、この大きな数値がどのように合計されるのか疑問に思っていましたか? 数値を文字列として保存し、各桁を long に変換しますが、数値が大きすぎて合計が機能しません。

非常に大きな数値を変数 (文字列ではない) として保持する方法はありますか? 私はそれを自分で解決したいので、コードを問題にしたくありません。

4

5 に答える 5

1

数字を配列に格納できます。スペースを節約し、操作のパフォーマンスを向上させるために、数値の桁を基数10^9に格納します。したがって、番号182983198432847829347802092190は、配列内で次のように表されます。

arr [0] = 2092190 arr [1] = 78293478 arr [2] = 19743284 arr [3] = 182983

わかりやすくするために、数値はarr [i] *(10 ^ 9i)の合計として表されます。ここで、i = 0で始まり、子供の頃に学んだ方法で数値を加算し始めます。

于 2012-05-08T06:29:45.973 に答える