毛のはえたようなもの

インターネット的なものをつらつらとかきつらねる。

ProjectEuler

Problem 25

フィボナッチ数列において1000桁になる最初の項の番号を答えよ. Problem 25 - PukiWiki limit = 10**999 a = [1,2] num = 3 while a.last < limit num += 1 a =[a[1], a[0]+a[1]] end p num 答え:4782

Problem 20

n × (n - 1) × ... × 3 × 2 × 1 を n! と表す。100! の各桁の数字の合計を求めよ。 Problem 20 - PukiWiki def make_array(num) array = [] while num > 0 num,tmp = num.divmod(10) array.unshift(tmp) end return array end sum = 1 (2..100).each{|n| sum…

Problem 67

no18と同じ。ただし100行。 Problem 67 - PukiWiki 答え:7273

Problem 18

以下の三角形の頂点から下まで移動するとき、その数値の合計の最大値は23になる。 3 7 5 2 4 6 8 5 9 3この例では 3 + 7 + 4 + 9 = 23以下の三角形を頂点から下まで移動するとき、その最大の合計値を求めよ。(省略) Problem 18 - PukiWiki triangle = [[75],…

Problem 16

215 = 32768 であり、これの各数字の合計は 3 + 2 + 7 + 6 + 8 = 26 となる。 同様にして、21000 の各数字の合計を求めよ。 Problem 16 - PukiWiki def make_array(num) array = [] while num > 0 num,tmp = num.divmod(10) array.unshift(tmp) end return a…

Problem 15

2 × 2 のマス目の左上からスタートした場合、引き返しなしで右下にいくルートは 6 つある。 では、20 × 20 のマス目ではいくつのルートがあるか。 Problem 15 - PukiWiki こりゃ高校数学だな。(これとか。) def fact(n) return 1 if n ==1 or n ==0 ans =1…

Problem 14

正の整数に以下の式で繰り返し生成する数列を定義する。 n → n/2 (n が偶数) n → 3n + 1 (n が奇数) 13からはじめるとこの数列は以下のようになる。 13 → 40 → 20 → 10 → 5 → 16 → 8 → 4 → 2 → 1 13から1まで10個の項になる。この数列はどのような数字からは…

Problem 13

以下の50桁の数字100個の総和の上位10桁を求めよ。 Problem 13 - PukiWiki def make_array(num) array = [] while num > 0 num,tmp = num.divmod(10) array.unshift(tmp) end return array end array =[ 37107287533902102798797998220837590246510135740250…

Problem 12

三角数の数列は自然数の和で表わされ、7番目の三角数は 1 + 2 + 3 + 4 + 5 + 6 + 7 = 28 である。 7番目の三角数である28は5つ以上の約数をもつ。 では、501 個以上の約数をもつ最初の三角数はいくらか。 Problem 12 - PukiWiki 素数の流用がおおいっす。 de…

Problem 11

上の 20 × 20 の数字のなか、赤くマークされた数字の積は 26 × 63 × 78 × 14 = 1788696 となる。 上下左右斜めのいずれかの方向で連続する4つの数字の積のうち最大のものを求めよ。 Problem 11 - PukiWiki def horizontal_max(mat) ans = mat[0][0]*mat[0][1…

Problem 10

0以下の素数の和は2 + 3 + 5 + 7 = 17である. 200万以下の全ての素数の和を計算しなさい. Problem 10 - PukiWiki include Math def prime_number?(num,pl) return false if num < 2 return true if num==2 || num==3|| num==5|| num==7|| num==11|| num==13|…

Problem 9

ピタゴラスの三つ組(ピタゴラスの定理を満たす整数)とはa Problem 9 - PukiWiki sum =1000 (1..(sum/3).to_i).each{|a| ((a+1)..((sum-a)/2).to_i).each{|b| c = sum -a -b p a*b*c and return if (a**2 + b**2 == c ** 2) } } 答え:31875000

Problem 8

以下の1000桁の数字から5つの連続する数字を取り出してその積を計算する。そのような積の中で最大のものの値はいくらか Problem 8 - PukiWiki def make_array(num) array = [] while num > 0 num,tmp = num.divmod(10) array.unshift(tmp) end return array …

Problem 7

素数を小さい方から6つ並べると 2, 3, 5, 7, 11, 13 であり、6番目の素数は 13 である。 10001 番目の素数を求めよ。 Problem 7 - PukiWiki $p_list =[] limit =10001 def prime_number?(num) return false if num < 2 k = true (3..num).each{|i| $p_list.e…

Problem 6

最初の10個の自然数について、その和の二乗と、二乗数の和は以下の通り。 1² + 2² + ... + 10² = 385 (1 + 2 + ... + 10)² = 3025これらの数の差は 3025 - 385 = 2640 となる。同様にして、最初の100個の自然数について和の二乗と二乗の和の差を求めよ。 Pro…

Problem 5

2520 は 1 から 10 の数字の全ての整数で割り切れる数字であり、そのような数字の中では最小の値である。 では、1 から 20 までの整数全てで割り切れる数字の中で最小の値はいくらになるか。 Problem 5 - PukiWiki まず範囲内各数字の因数のリストを作って、…

Problem 4

左右どちらから読んでも同じ値になる数を回文数という。 2桁の数の積で表される回文数のうち、最大のものは 9009 = 91 × 99 である。 では、3桁の数の積で表される回文数のうち最大のものはいくらになるか。 Problem 4 - PukiWiki a+b=一定のときaとbの値が…

Problem 3

13195 の素因数は 5、7、13、29 である。 600851475143 の素因数のうち最大のものを求めよ。 Problem 3 - PukiWiki 処理が重すぎて600851475143では途中で止まってしまう模様。当たり前だよねえ。 limit =13195 max = 0 (2..limit).each{|i| if limit%i == 0…

Problem 2

フィボナッチ数列の項は前の2つの項の和である。最初の2項を 1, 2 とすれば、最初の10項は以下の通りである。 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, ...数列の項が400万を超えない範囲で、偶数の項の総和を求めよ。 Problem 2 - PukiWiki 数列の項の値が400万…

Problem 1

10未満の自然数のうち、3 もしくは 5 の倍数になっているものは 3, 5, 6, 9 の4つがあり、これらの合計は 23 になる。 同じようにして、1,000 未満の 3 か 5 の倍数になっている数字の合計を求めよ。 Problem 1 - PukiWiki sum = 0 limit =999 (1..limit).ea…