Подсчёт чисел Фибоначчи - PascalABC.NET
Формулировка задачи:
Очень нужна функция подсчёта количества чётных чисел Фибоначчи (отрезок [a,b]), у которых количество чётных цифр равно количеству нечётных. Ума не приложу как делать, заранее благодарен.
Числа Фибоначчи — линейная рекуррентная последовательность натуральных чисел, где первое и второе равно единице, а каждое последующее — сумме двух предыдущих: 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, …
Решение задачи: «Подсчёт чисел Фибоначчи»
textual
Листинг программы
uses System.Linq; type pair = KeyValuePair<integer, integer>; var a := ReadLnInteger('Начало отрезка = '); // 20 b := ReadLnInteger('Конец отрезка = '); // 8000; begin var fib : integer -> integer := n -> Enumerable.Range(1, n).Skip(2).Aggregate(new Pair(1, 1), (seq : Pair; index : integer) -> new Pair(seq.Value, seq.Key + seq.Value)).Value; var fn := Enumerable.Range(1, integer.MaxValue - 1).Select(v -> fib(v)).SkipWhile(v -> v < a).TakeWhile(v -> v < b). Where(i -> IntToStr(i).ToCharArray().Select(ch -> Pos(ch, '13579') = 0 ? -1 : 1).Sum() = 0); writeln(fn, ' Количество = ', fn.Count()); end.
Объяснение кода листинга программы
В этом коде используется язык программирования PascalABC.Net для подсчета чисел Фибоначчи в определенном диапазоне. Вот список действий, которые выполняются в коде:
- В первой строке объявляется тип данных pair, который представляет собой пару значений (ключ, значение).
- Затем пользователю предлагается ввести начальное значение отрезка (a) и конечное значение отрезка (b).
- Далее, используя LINQ-запросы, подсчитывается число Фибоначчи для диапазона от 1 до n, где n - это максимальное значение, которое можно представить в типе данных integer.
- Затем, используя LINQ-запросы, из этого диапазона выбираются только те числа Фибоначчи, которые меньше заданного значения a и больше заданного значения b.
- Наконец, выводится количество найденных чисел Фибоначчи.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д