×

[PR]この広告は3ヶ月以上更新がないため表示されています。
ホームページを更新後24時間以内に表示されなくなります。

[パズル]小町数となる単位分数

問題
  単位分数が、1/n となる、1-9までの数を1回ずつ使った分数を求めよ。
  ただし、n は、2から 9までの数とする。
  たとえば、6729/13458 は、1/2なので、求める答えのひとつである。



この問題を解くプログラムは、いくつかやり方が考えられます。n が与えられたときに、
1. 小町数となる分数を求め、それが、1/n と なるかどうかを調べる方法
2. m/(n*m)となる分数を求め、それが小町数になっているかを調べる方法

※ 1,2,3..9で構成される数を小町数と呼びます。

後者のほうがプログラムが簡単そうなので、後者の方法でプログラムを作成しました。
1/2, 1/3 ... 1/9 となる小町数を求めるわけですから、求める分数は、必ず 4桁/5桁となるはずです。
そのため、上記の m は、1234から9876までの範囲ということになります。

たとえば、1/2の時は、
1234/(1234*2) つまり、1234/2468 が 1から9でなっているかを調べます。次に
1235/(1235*2) -> 1235/2470 が1から9で成っているかを調べます。次に
1236/(1236*2) -> 1236/2472 が1から9で成っているかを調べます。次に
...

と順に調べていきます。
これは、明らかに123456789の順列を求める 前者の方法よりも効率が良さそうです。

小町数かどうかを調べるのは、文字列にして、文字順に並べ替え、"123456789"と等しいかを調べています。
力ずくのやり方ですが、1秒かからずに答えが見つかるので、これで十分でしょう。


■MainPage.xaml.cs
  
■MainPage.xaml