出典: Project Euler (日本語翻訳サイト)
参考: サイエンスもの置き場 プロジェクトオイラーを遊び倒すガイド(初級編)
Problem 29
2 ≤ a ≤ 5 と 2 ≤ b ≤ 5について, abを全て考えてみよう:
- 22=4, 23=8, 24=16, 25=32
- 32=9, 33=27, 34=81, 35=243
- 42=16, 43=64, 44=256, 45=1024
- 52=25, 53=125, 54=625, 55=3125
4, 8, 9, 16, 25, 27, 32, 64, 81, 125, 243, 256, 625, 1024, 3125
2 ≤ a ≤ 100, 2 ≤ b ≤ 100 で同じことをしたときいくつの異なる項が存在するか?
私の解答例は以下です。
def f(m, n): L = [] for a in xrange(m, n+1): for b in xrange(m, n+1): L.append(a**b) return len(set(L)) print f(2,100)
1.関数f(m, n)
・m以上n以下のa,bについて、aのb乗の値の異なる項の数を返します。
・for a in xrange(m, n+1):
for b in xrange(m, n+1):
ループ変数a, bはそれぞれm以上n以下の値をとる二重ループです。
・L.append(a**b)
リストLにaのb乗の値を全て設定します。
・return len(set(L))
set型は、重複するオブジェクトを持たない、順序付けられていない要素の集まりのことです。
set型へ型変換することでリストLから重複を除きます。
その後、len関数で要素数を数えて返します。
解答はこのすぐ下の行です。文字の色を白にしてます。選択状態にすると見えます。
9183
0 件のコメント:
コメントを投稿