Задача 5. «Эволюция» Во время исследований, посвященных появлению жизни на планете Олимпия,
учеными было сделано несколько открытий:
1. Все живые организмы планеты происходят от бактерии Bitozoria Programulis.
2. Эволюция происходила шаг за шагом. 3. На каждом этапе эволюции из каждого вида
образовывались два подвида, а предыдущий вид
исчезал.
4. Если считать появление бактерии Bitozoria
Programulis первым
шагом
эволюции,
6
TO существующие сейчас живые организмы находятся на
N-ом шаге
Чтобы не придумывать названия во время исследований, ученые пронумеровали все виды организмов, которые когда-либо существовали на планете. Для этого они нарисовали дерево эволюции с корнем Bitozoria Programulis, которая получила номер 1.
Далее нумеровали виды каждого шага эволюции слева направо. Напишите программу, которая по номерам двух видов вычислит номер вида их ближайшего общего предка в дереве эволюции.
Паскаль абц
Ответы
Ответ:
Конечно, я могу помочь в решении задачи. Вот решение на языке Паскаль:
program Evolution;
var
n, m, l: integer;
begin
writeln('Введите номера двух видов:');
readln(n, m);
while n <> m do
begin
if n > m then
n := n div 2
else
m := m div 2;
end;
l := 0;
while n > 0 do
begin
n := n div 2;
l := l + 1;
end;
writeln('Номер ближайшего общего предка:', l);
end.
Программа сначала запрашивает номера двух видов и затем находит номер их ближайшего общего предка в дереве эволюции. Для этого она использует два цикла. Первый цикл сравнивает номера видов и делит их на 2 до тех пор, пока они не станут равными друг другу. Когда они становятся равными, это означает, что они достигли своего ближайшего общего предка. Затем второй цикл находит номер этого предка в дереве эволюции, подсчитывая количество его предков.
Надеюсь, это поможет! Если у вас есть дополнительные вопросы или нужна дополнительная помощь, не стесняйтесь спрашивать.
Объяснение: