Problem 25


フィボナッチ数列で 1000桁を越える一番初めの数字は何かという
問題。楽勝じゃんって思ってやったら 30桁ぐらいで答えがでなく
なって調べてみたら、整数値に収まってなかった。なのでbigintを使う。

#!/usr/bin/perl
use strict;
use warnings;

use bigint;

print "Answer is ", p25(1000), "\n"; # Answer is 4782

sub p25 {
    my ($digit) = @_;
    my ($prev1, $prev2) = (1, 1);
    my $count = 2;

    while (1) {
        $count++;
        my $nth = $prev1 + $prev2;
        last if (length $nth) >= $digit;
        ($prev1, $prev2) = ($nth, $prev1);
    }

    return $count;
}