スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

整数の問題

1 から 9 までの異なる数をそれぞれの位にもつ 9 桁の数 ABCDEFGHI のうち、A が 1 で割り切れ、AB が 2 で割り切れ、ABC が 3 で割り切れ、……、ABCDEFGHI が 9 で割り切れる、というように、上から n 桁の数がすべて n で割り切れるようなものを求めよ。

Rubyプログラム

以下は、与えられた条件を満たすかどうかを 1 から 9 までのすべての順列に対して確かめることにより解答を列挙するという素朴なプログラムです。

(1..9).to_a.permutation{ |p|
  not_solution = false
  a = Array.new(10); a[0] = 0
  1.upto(9){ |i|
    a[i] = 10 * a[i-1] + p[i-1]
    unless a[i] % i == 0 then
      not_solution = true
      break
    end
  }
  next if not_solution
  puts "#{a[9]}"
}

実行すると、1 分もしないうちに、解は 381654729 だけであることが確認できました。

解答例

Step 1

どのような整数も 1 で割り切れるので、最初の時点で A はすべての数が候補になる。

A, B, C, ..., I に数字をどのように割り当てても、1+2+3+…+9=45 より A+B+C+…+I の合計は常に 9 の倍数なので、ABCDEFGHI は常に 9 の倍数。

Step 2

ABCDE は 5 の倍数なので、E=5。

AB, ABCD, ABCDEF, ABCDEFGH はいずれも 2 の倍数なので、B, D, F, H は偶数であり、2, 4, 6, 8 のいずれかである。したがって、残りの A, C, G, I は 5 以外の奇数である。

Step 3

ABCDは 4 の倍数なので、CD は 4 の倍数。C は奇数なので、D=2, 6。

ABC, ABCDEF はともに 3 の倍数なので, A+B+C, A+B+C+…+F はともに 3 の倍数。よって、D+E+F は 3 の倍数。これにより F の候補は絞られるが、各アルファベットが異なる数を表すことにも注意すれば、

DEF=258, 654. 

Step 4

ABCDEFGH は 8 の倍数なので、FGH は 8 の倍数。F は偶数、G は 5 以外の奇数なので、GH=16, 32, 72, 96。ゆえに、

DEFGH=25816, 25896, 65432, 65472. 

Step 5

ABCDEF, ABCDEFGHI はともに 3 の倍数なので、A+B+C+…+F, A+B+C+…+I はともに 3 の倍数。よって、G+H+I は 3 の倍数。これにより I の候補は絞られるが、各アルファベットが異なる数を表すことにも注意すれば、

DEFGHI=258963, 654321, 654327, 654723, 654729. 

Step 6

1 から 9 までの数字の和は 3 の倍数であり、D+E+F, G+H+I は 3 の倍数であるように選ばれているので、残った数字の合計は常に 3 の倍数である。よって、A, B, C に残った数をどのように割り当てても ABC は必ず 3 の倍数になる。

A, C は奇数、B は偶数だから、

ABCDEFGHI=147258963, 741258963, 
           789654321, 987654321,
           189654327, 981654327,
           189654723, 981654723,
           183654729. 381654729. 

この中で、ABCDEFG が 7 の倍数であるものは、

ABCDEFGHI=381654729

だけである。これが求める答えである。

【theme : 数学
【genre : 学問・文化・芸術

プロフィール

よしいず

Author:よしいず
MATHEMATICS.PDFというウェブサイトを運営しています。

管理の都合上、トラックバックとコメントはオフにしてあります。ブログ経験者なら分かっていただけると思いますが、スパム(アダルトやその他の宣伝)ばかりなのが現実です。

リンクは自由です。当サイトの記事に対する間違いの指摘・意見・感想などを述べた記事からのリンクは歓迎です。ただし、ブログ記事アップ直後はミスが多く、頻繁に修正します。場合によっては削除する可能性もあります。その際、何も断りもなく修正・削除しますがご了承ください。内容を参考にする場合には投稿後一週間ほど様子を見てからにしてください(笑)。

記事の間違いを指摘するときは、その具体的箇所、理由(仕様に反するなど)・根拠(参考にした文献など)、代替案(同じ結果を得るための正しいやり方)も教えてください。そうしないと、(指摘される側および第三者はその時点では無知の状態なので、)どこが間違いなのか分かりませんし、本当に間違っているのかどうかが判断・検証できません。実際、間違いだと指摘されたことが結局は正しかったというケースもありますので。

このブログのタイトル一覧

リンク
月別アーカイブ
カテゴリ
最新記事
検索フォーム
RSSリンクの表示
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。