Original

The Fibonacci sequence is defined by the recurrence relation:

Fn = Fn1 + Fn2, where F1 = 1 and F2 = 1.
Hence the first 12 terms will be:

F1 = 1
F2 = 1
F3 = 2
F4 = 3
F5 = 5
F6 = 8
F7 = 13
F8 = 21
F9 = 34
F10 = 55
F11 = 89
F12 = 144
The 12th term, F12, is the first term to contain three digits.

What is the first term in the Fibonacci sequence to contain 1000 digits?

和訳

フィボナッチ数列は以下の漸化式で定義される:

Fn = Fn-1 + Fn-2, ただし F1 = 1, F2 = 1.
最初の12項は以下である.

F1 = 1
F2 = 1
F3 = 2
F4 = 3
F5 = 5
F6 = 8
F7 = 13
F8 = 21
F9 = 34
F10 = 55
F11 = 89
F12 = 144

12番目の項, F12が3桁になる最初の項である.

1000桁になる最初の項の番号を答えよ.

当てにならないソースコード(C#)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
using System;

namespace ProjectEuler {
    class Problem25 : Problem{
        public Problem25() {
            int answer = 0;
            BigInt comparer = MakeComparer(1000);
            BigInt a = 1, b = 1, term = a;
            for (int i = 3; comparer >= term; answer = i++) {
                term = ((i & 1) == 1) ? a += b : b += a;
            }
            Console.WriteLine("> " + answer);
        }

        BigInt MakeComparer(int digits){
            BigInt comparer = new BigInt(1);
            comparer.Multiple((int)Math.Pow(10, (digits - 1) % 9));
            for (int i = (digits - 1) / 9; i > 0; i--) {
                comparer.Multiple(1000000000);
            }
            return comparer;
        }
    }
}


BigIntで一番小さい1000桁の数を作り、初めてその値を超えるまで項を求め続けています。
意外に値の増加率は大きいので、思ったより早く答えが出ました。
といっても○千項ですが。