どーも、みつおです。
問題
辺の長さが {a,b,c} と整数の3つ組である直角三角形を考え, その周囲の長さを p とする. p = 120のときには3つの解が存在する:
{20,48,52}, {24,45,51}, {30,40,50}
p ≤ 1000 のとき解の数が最大になる p はいくつか?
出典:Problem39
解答
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 |
using System; namespace Problem39 { class Program { static void Main(string[] args) { Console.WriteLine(Solve()); Console.ReadLine(); } private static int Solve() { int ret = 0; int max = CountSankaku(120); for (int i = 2; i <= 1000; i++) { //解の数 if (max < CountSankaku(i)) { //解の数を更新 max = CountSankaku(i); ret = i; } } return ret; } private static int CountSankaku(int n) { int ret = 0; int c; for (int a = 1; a < n; a++) { for (int b = a; b < n - a; b++) { c = n - a - b; //三角形か判定 if (0 < c && c * c == a * a + b * b) { ret++; } } } return ret; } } } |
出力
840
コメントを残す