Exemple #1
0
        public void Go()
        {
            var gen = new BigInteger[, ]
            {
                { 0, 1 },
                { 1, 1 },
            };

            var f1 = new BigInteger[, ]
            {
                { 0, 0 },
                { 0, 1 },
            };

            const int desiredLen = 1000;
            const int maxN       = 100000;

            var result = 0;

            EnumerableHelper.BinarySearch(maxN, n =>
            {
                var fibn = GetFib(gen, f1, n);
                var len  = fibn.ToString().Length;

                result = n;

                if (len < desiredLen)
                {
                    return(1);             // go right
                }
                return(-1);                // go left
            });

            Console.WriteLine(result);

            Console.WriteLine(new { n = 11, len = GetFib(gen, f1, 11).ToString().Length });
            Console.WriteLine(new { n = 12, len = GetFib(gen, f1, 12).ToString().Length });
            Console.WriteLine(new { n = result - 1, len = GetFib(gen, f1, result - 1).ToString().Length });
            Console.WriteLine(new { n = result, len = GetFib(gen, f1, result).ToString().Length });
        }