お店のなかにピタゴラスイッチ的な仕掛けがある。 / hm7hm7
projecteuler.net問題
ピタゴラスの定理は、直角三角形の各辺a, b, c (a < b < c)が次の関係にあることを示す。
\(a^{2} + b^{2} = c^{2}\)
直角三角形の辺a, b, cが次の関係にあるときa, b, cはただ1つの値が定まる。
\( a + b + c = 1000 \)
\( a \times b \times c \)の値を求めよ。
式の整理
先に数式を整理してしまいましょう。
1000 = nと置くと、手持ちの式は
\( a+b+c=n \)
\(a^{2} + b^{2} = c^{2}\)
の2つ。
まず、
\( c=n-a-b \)
と変形してピタゴラスの定理のcに代入する。
\( a^{2} + b^{2} = (n - a - b)^{2} \)
\( =n^{2} + a^{2} + b^{2} -2na -2nb +2ab \)
右辺と左辺にあるa2とb2が打ち消しあって、
\( n^{2} -2na -2nb +2ab = 0\)
\( 0.5n^{2} -n(a + b) +ab = 0\)
こんな式が出てくる。
この式を満たすa, bが求まればn - a - bでcも求まって完了。
後はabcを出力するだけ。
コード
using System; using System.Diagnostics; namespace Problem9 { class Program { static void Main(string[] args) { Debug.WriteLine("Answer : {0}", Result()); } static Int64 Result() { Int64 n = 1000; for (Int64 a = 1; a < n; a++) { for (Int64 b = a + 1; b < n; b++) { if (a * b - n * (a + b) + 0.5 * n * n == 0) { Debug.WriteLine("(a, b, c)=({0}, {1}, {2})", a, b, (n - a - b)); return a * b * (n - a - b); } } } return 0; } } }
答え
31875000
(a, b, c)=(200, 375, 425)になりました。
検算したから合ってるはず!
- 出版社/メーカー: ハピネット
- 発売日: 2015/01/31
- メディア: おもちゃ&ホビー
- この商品を含むブログを見る
- 出版社/メーカー: ポニーキャニオン
- 発売日: 2006/12/01
- メディア: DVD
- 購入: 20人 クリック: 606回
- この商品を含むブログ (375件) を見る
- アーティスト: TVサントラ
- 出版社/メーカー: ワーナーミュージック・ジャパン
- 発売日: 2010/08/18
- メディア: CD
- 購入: 8人 クリック: 386回
- この商品を含むブログ (28件) を見る