37で割り切れるpandigital number
2016年JJMO予選の問題をプログラミングで解いてみた。
0を含めない場合についても考えてみた。
def A(m, n)
ary = []
(m..n).to_a.permutation{|i|
if i[0] > 0
j = i.join.to_i
ary << j if j % 37 == 0
end
}
ary
end
def show(ary, n)
p ary.size
# 小さいものをn個表示
p ary[0..n - 1]
# 大きいものをn個表示
p ary[-n..-1]
end
n = 10
show(A(0, 9), n)
# もし1から9の数字だったら
show(A(1, 9), n)
出力結果
85104
[1023654987, 1023657984, 1023684957, 1023687954, 1023745896, 1023746895, 1023795846, 1023796845, 1023845796, 1023846795]
[9876142305, 9876145302, 9876302145, 9876305142, 9876342105, 9876345102, 9876412035, 9876415032, 9876432015, 9876435012]
9072
[123564978, 123568974, 123574968, 123578964, 123645897, 123647895, 123695847, 123697845, 123845697, 123847695]
[987263415, 987265413, 987413265, 987415263, 987463215, 987465213, 987532146, 987536142, 987542136, 987546132]
0 件のコメント:
コメントを投稿
注: コメントを投稿できるのは、このブログのメンバーだけです。