質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

4回答

2965閲覧

1957年京都大学の入試問題について

manman

総合スコア233

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

6クリップ

投稿2014/11/23 19:06

a,b,c,d,e,fをいずれも0から9までの数字とする。
6桁の整数abcdefを適当に定めて、その2倍がcdefabとなるようにせよ。
ここにabcdefは、通常の十進法による記法であって、整数
10^5 a + 10^4 b + 10^3 c + 10^2 d + 10 e + f
を表わすとし、cdefabについても同様であるとする。

数学的解法によらないで、プログラミングで解いてください。
使用言語はC++、Ruby、Pythonのいずれかでお願いします。

ちなみに、私は以下のように解きました。
(a,b,c,d,e,fは同じ数字が重複してもよいと仮定)

lang

1(0..9).to_a.repeated_permutation(6){|i| 2 m = i.join.to_i 3 n = (i.join[2..-1] + i.join[0..1]).to_i 4 puts m if m * 2 == n && m.to_s.size == 6 5}

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答4

0

ベストアンサー

lang

1(0..999999).each do |i| 2 j = (i % 10000) * 100 + (i / 10000) 3 puts i if i * 2 == j 4end

実行結果

0 142857 285714 428571

投稿2014/11/23 22:36

katoy

総合スコア22324

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

manman

2014/11/24 03:51

katoyさんのように文字列で処理しない方が無駄がなくていいですね。
katoy

2014/11/24 05:18

一行にまとめてみました。 (0..10**6).each {|i| puts i if (i * 2) == (i % 10**4) * 10**2 + (i / 10**4)}
katoy

2014/11/24 05:46

a, b, ... f に異なる数字を割り当てるとするなら、覆面算   abcdef + abcdef = cdefab として解くことも考えられます。 単に数字の組み合わせを総当たりで試すだけになりますが、 汎用の覆面算ソルバーを書くことも可能です。 - 覆面算ソルバー(足し算限定) [http://d.hatena.ne.jp/haruya12/20140531/1401561478] 上のページで示されたプログラムの最後の行を   Alphametic.new('ABCDEF + ABCDEF = CDEFAB') として、実行したら、次の出力を得ました。 ABCDEF + ABCDEF = CDEFAB 428571 + 428571 = 857142 142857 + 142857 = 285714 285714 + 285714 = 571428
退会済みユーザー

退会済みユーザー

2017/03/17 00:01

力技のほうがシンプルに記述できる良い(?)例ですね。面白かったです。
guest

0

lang

1[x for (x, y) in [( int( x ),int( x[2:] + x[:2] ) ) for x in map(''.join, itertools.product( '123456789', repeat=6 ) )] if x * 2 == y] 2 3# [142857, 285714, 428571]

投稿2014/11/24 04:15

Lhankor_Mhy

総合スコア36104

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

manman

2014/11/24 04:25

問題文に「a,b,c,d,e,fをいずれも0から9までの数字とする。 」とあるので、 '0123456789'の直積の方が良いと思われます。 '0123456789'の直積に変更すると出力結果は [0, 142857, 285714, 428571] となります。
Lhankor_Mhy

2014/11/24 04:27

あ、おっしゃるとおりですね。失礼しました。
fuzzball

2017/03/16 23:42

0-9にするのは正しいと思いますが、「6桁の整数」とあるので結果的に0は含まないのが正解ではないでしょうか?
guest

0

Ruby

1999999.times do |x| 2 a, b, c, d, e, f = x.to_s.split("") 3 puts x if x * 2 == [c, d, e, f, a, b].join.to_i 4end 5 6#6桁バージョン 7999999.times do |x| 8 a, b, c, d, e, f = x.to_s.split("") 9 if [a, b, c, d, e, f].compact.length == 6 10 puts x if x * 2 == [c, d, e, f, a, b].join.to_i 11 end 12end

katoy様のプログラムを参考に考えてみました。
優れている所はありません。

投稿2017/03/17 04:51

編集2017/03/17 06:00
退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

katoyさんの回答とfuzzballさんのコメントを参考に、abcdefが6桁の整数となる条件で求めました。

Python

1# 2 * abcdef = cdefab となる6桁の数値abcdefを求める 2for i in range(100000,1000000): # 6桁 3 j = (i % 10000) * 100 + (i / 10000) # abcdef -> cdefab 4 if j == i * 2: # 2 * abcdef = cdefab となる 5 print("i=%d,j=%d" % (i,j))

結果

i=142857,j=285714 i=285714,j=571428 i=428571,j=857142

投稿2017/03/17 00:25

編集2017/03/17 01:08
can110

総合スコア38266

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

fuzzball

2017/03/17 01:03 編集

cdefabについては6桁であると書かれていません。
can110

2017/03/17 01:08

確かに!ご指摘ありがとうございます。回答修正しました。
fuzzball

2017/03/17 01:23

調子に乗ってもう一つ書きますが、「全て求めよ」ではないので1つ目を出力して終了してもいいんじゃないかと思ったり。
can110

2017/03/17 01:33

ですね。競技プログラミング的な問題では、計算時間がシビアなので「ひとつ求めよ」か「すべて求めよ」かたいてい明記されてますね。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問