Определить количество бактерий на заданный момент времени - Free Pascal
Формулировка задачи:
Помогите пожалуйста написать программу
{
Имеется n бактерий красного цвета. Через 1 такт времени красная бактерия меняется на зелёную, затем через 1 такт времени делится на красную и зелёную. Сколько будет всех бактерий через k тактов времени?
Описать и использовать функцию Fib(N), вычисляющую N-й элемент
последовательности чисел Фибоначчи.
Рекомендуемый интерфейс:
1#
Введите число красных бактерий: 10
Введите количество тактов: 9
Общее число бактерий через 9 тактов равно 550
!Внимание! Запрещается использовать циклы, рекурсию и операторы выбора. Оператор присваивания допустим только один.
}
Решение задачи: «Определить количество бактерий на заданный момент времени»
textual
Листинг программы
var kb,kt:integer;
function fib(n:integer):longint;
begin
fib:=trunc(exp(n*ln((sqrt(5)+1)/2))/sqrt(5)+0.5)
end;
begin
write('Введите число красных бактерий: ');readln(kb);
write('Введите количество тактов: ');readln(kt);
write('Общее число бактерий через ',kt,' тактов равно ',kb*fib(kt+1))
end.
Объяснение кода листинга программы
- Объявлены две переменные kb и kt типа integer (целое число).
- Определена функция fib, которая принимает целочисленный аргумент n и возвращает значение типа longint (длинное целое число).
- Внутри функции fib происходит вычисление числа Фибоначчи для заданного аргумента n.
- В основной части программы пользователю предлагается ввести количество красных бактерий и количество тактов.
- Затем происходит вызов функции fib с аргументом kt+1, так как в условии задачи сказано
на заданный момент времени, а нена момент ввода. - И наконец, выводится общее количество бактерий через заданное количество тактов.