C♯の勉強

C♯4.0 で TopCoder の過去問を解きます。

TopCoder SRM622: FibonacciDiv2

ある程度の数までフィボナッチ数を求めてから、差分の最小値を求める。

public class FibonacciDiv2 {
    public IEnumerable<int> GetFibonacci() {
        List<int> f = new List<int>();
        f.Add(0);
        f.Add(1);
        while (true) {
            var x = f[f.Count - 2] + f[f.Count - 1];
            if (x >= 1000000000) break;
            f.Add(x);
        }
        return f;
    }

    public int find(int N) {
        return GetFibonacci().Select(x => Math.Abs(N - x)).Min();
    }
}