1

あるインタビューで、PI の展開で最初の 9 桁の回文を見つけるように求められました。そして、私はそれをどのように行うべきかについてまったく考えていませんでした。質問はインタビュー中ずっと私のシステムに残っていて、その後の質問に適切に答えることができませんでした.

最適な方法は?

編集:

回文を見つけることは難しくありませんが、必要なだけ PI の展開を取得するにはどうすればよいですか。私はMath.PIを試しました.22/7を試しましたが、必要なものは何も得られません.

4

3 に答える 3

2

ここでの「最適な」方法は、既製の任意の桁数にアクセスできないと仮定して、Pi を計算するためのアルゴリズムの選択に大きく依存します。

pi に対して収束する無限の合計がたくさんあり、それぞれが最終的に正しい数字を生成できますが、無限に正確な浮動小数点数または無限に大きな整数を許可するライブラリを使用する必要があります。

その後、回文を見つけるのは比較的簡単です。1 番目と 9 番目、2 番目と 8 番目などを比較するだけでよいからです。

この場合の問題は明らかに、Pi の近似にどの収束和を使用するかです。これらのいくつかは、Pi の wikipedia ページにリストされています: http://en.wikipedia.org/wiki/Pi#Polygon_approximation_era

于 2012-09-01T06:36:54.617 に答える
1

まず、pi の数値のサブセットを作成し、文字列に変換します。

そこから 9 文字のサブセット文字列を取得し、最初の文字と最後の文字を比較します。一致する場合は、文字 2 と 8 などを比較します。いずれかの比較が失敗した場合は、9 文字の文字列を次のセットに移動します (1 文字分)。

于 2012-09-01T06:34:49.600 に答える
0

おそらく、代入先とfirst index値を指定して、それらが等しいかどうかを確認します。それらが等しい場合、中間位置で出会うまで、値と値を割り当てます。ある場所でそれらが互いに異なる場合は、 の値と の 2 番目の変数の値が異なるの値を割り当て、位置に到達するまでプロセスを繰り返します。first variableninth indexsecond variablesecond indexfirst variableeight indexsecond variablefirst variablelatest left side indexright side indexleft side index + 8last index - 8

于 2012-09-01T06:56:12.457 に答える