1

インタビューの質問:

2 つの int N (分子) と D (分母) を指定すると、分数を文字列で返します。分数が繰り返されている場合は、繰り返し部分を括弧内に表示します。

例: 入力: N=1、D=3 出力: 0.[3]

例: 入力: N=2、D=5 出力: 0.4

私の考え:

double 値で a = N/D を取得します。

小数点以下の部分については、その過程で各桁を x 10 で取得し、繰り返しが見つかった場合は、インデックスを記録し、最後に [] を挿入します。

小数点以下は/10で各桁を取得

より良いアイデアはありますか?

ありがとう

4

3 に答える 3

4

ペストのようなダブルの使用は避けます。精度が有限であるため、正しい答えは得られません。整数演算に固執し、剰余を追跡しながら長除算をシミュレートします。分子の桁がなくなった後 (つまり、ゼロを減らしている)、残りの履歴も保持し、履歴に既に残っている残りが表示された場合は、繰り返しシーケンスにヒットしたことを示します。その後、括弧付きの出力部分を作成できます。(もちろん、余りが 0 の場合は、答えが端数であることを意味します。)

于 2011-12-14T06:49:51.260 に答える