2011-12-14 4 views
1

インタビュー質問:分数を文字列に変換し、繰り返し部分に[]を挿入する

2つのint N(分子)とD(分母)が与えられた場合、文字列の小数を返します。端数が繰り返されている場合は、繰り返し部分を括弧で囲んで表示します。

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

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

私の考え:

二値= N/Dを得ます。

小数点以下の桁については、x桁の数字を10桁で取得します。繰り返し検索する場合は、最後に[]を挿入してください。小数点の前の部分のための

、/ 10

によって任意のより良いアイデアを各桁を取得しますか?私は疫病のような二重を使用して回避する

おかげ

答えて

4

。有限の精度のために、それはあなたに正しい答えを与えることはありません。整数演算に固執し、残りを追跡してlong divisionをシミュレートします。分子の数字が足りなくなった後(ゼロを下げるため)、残余の履歴も保存しておき、残っている部分が履歴にある場合は、繰り返しシーケンスに当ったことを知らせます。括弧で囲まれた出力部分を作成することができます。 (もちろん、残りの部分がゼロになった場合は、その答えが終端部分であることを意味します)。

+0

そして、[別の関連する質問に対するこの答えのコード](http://stackoverflow.com/a/8455604/968261)は、分子と分母と余りの長い分裂を助けることができます。 –

関連する問題