ピタゴラス数(ピタゴラスの定理を満たす自然数)とは a < b < c で以下の式を満たす数の組である.
a2 + b2 = c2
例えば, 32 + 42 = 9 + 16 = 25 = 52 である.
a + b + c = 1000 となるピタゴラスの三つ組が一つだけ存在する.
これらの積 abc を計算しなさい.
これらの積 abc を計算しなさい.
A.
a<b<c で三角形なので a+b >cが成立する
a + b + c = 1000なので cの最大は500
a<bを考えるとa<(1000-c)/2
この制約でループを書けば求まる。 答えは 31875000
プログラム本体は catch ~ throwの練習か?
catch(:loop_break) do
1000.downto(334) do |c|
1.upto((1000-c) / 2) do |a|
b = 1000 - a - c
if a*a+b*b == c*c
puts a*b*c
throw(:loop_break)
end
end
end
end
0 件のコメント:
コメントを投稿