2倍すると最後尾の数字が先頭に

ある長い数列があり、2倍すると最後尾の数字(8)が先頭に移動します。
自前で作成した C# の List Object Class を使って、元の数列を求めて表示して下さい。

前田稔(Maeda Minoru)の超初心者のプログラム入門

問題の説明

  1. 元の数列(桁数は不明)
    ・・・・・・・・・8

    2倍すると8が先頭に移動する
    8・・・・・・・・・
  2. 元の数列を2倍すると、最下位の桁が8なので積の最下位桁は6になることが解かるでしょう。
    ・・・・・・・・・8
          ×2
    8・・・・・・・・6
  3. 積の最下位桁が6と言う事は、8の隣が6になります。
    ・・・・・・・・68
  4. ・・・68を2倍すると、6の隣は3なります。
    この考え方を繰り返して行くと、やがて答えが求まります。
    ・・・・・・・・68
          ×2
    8・・・・・・・36

プログラムの説明

  1. この問題では「答えが何桁になるか不明で」下位から一桁ずつ求まります。
    また求めた答えは、求めた順とは逆に表示しなければなりません。
    このようなときは List Object Class を使うのが便利です。
    List Object Class の説明は List Object Class を参照して下さい。
  2. プログラムは難しくないので、すぐに作成できるでしょう。
    注意しなければならないことは、8が現れたからと言ってすぐ完成したと早とちりしてはなりません。 (^_^;)
    数式が成り立つようになるまで、きちんと計算して下さい。
    C/C++ を使ったプログラムは 2倍すると最後尾の数字が先頭に を参照して下さい。

【演習】

最初の説明では2倍していますが、3倍,4倍,・・・,8倍でも同じように答えを求めることが出来ます。
また倍数によって数列の長さが大きく変わるので注意して下さい。
それでは「3倍~8倍」の場合の答えを求めて下さい。
数列が最も長くなるのは何倍のときで、何桁になるでしょう?。

前田稔(Maeda Minoru)の超初心者のプログラム入門