Project Euler 39

Problem 39

  • right angle triangle とは直角三角形のこと
  • p <= 1000 なので、1 辺の長さは 500 まで調べる
using System;
using System.Collections.Generic;
using System.Linq;

class PE039 {
    static void Main() {
        const int N = 500;

        var freq = new Dictionary<int, int>();
        for (int i = 1; i < N; i++) {
            for (int j = i; j < N; j++) {
                int kk = i*i + j*j;
                int k = (int)Math.Sqrt(kk);
                if (k*k == kk && i+j+k <= 1000) {
                    int n = i+j+k;
                    // Console.WriteLine("{0}^2 + {1}^2 = {2}^2", i, j, k);
                    if (!freq.ContainsKey(n)) freq[n] = 0;
                    freq[n]++;
                }
            }
        }

        Console.WriteLine(freq.OrderBy(e => e.Value).Last());
    }
}

以下、メモ。

  • Dictionary に存在しないキーに対してアクセスすると、KeyNotFoundException 例外となる。