|
> n <=100000 のとき、正の整数nを一つ標準入力から読み込んで、1/nを計算して、
> 結果を出力して終了するプログラムを作りたいのですが、どうしていいか分かりません。
> 出力方法も、もし答えが循環小数の場合、循環する部分を括弧()で囲まなければなりません。
まず、問題の意味を正しく理解しているか確認してみましょう。
そのために、具体例を考えてみます。
n = 5 のとき、1/n = 0.2
n = 6 のとき、1/n = 0.1666... = 0.1(6)
n = 7 のとき、1/n = 0.142857142857... = 0.(142857)
こういうことですね。ここまではわかっていますか?
小数の割り算は小学校で学んでいますから、次のようなアルゴリズムが思いつくはずです。
[1] a = 1 とする。
[2] a を 10倍し、n で割る。
[3] 商を表示する。
[4] 余りを新たな a とする。
[5] a が 0 なら有限小数なので終了。
[6] a がすでに出た値なら、そこからこのひとつ前までを循環する小数なので終了。
[7] [2] に戻る。
整数部分の表示は省略して、小数部分だけを表示しています。
循環する部分を括弧で囲むなら、[3] で表示せず、その値を憶えておいて後で表示しなけ
ればならないでしょう。
C のプログラムを書くなら、商の配列と、余りの配列を用意することになります。
まだ、わからないことがありますか?
|