Выведите одно натуральное число – номер ближайшего предка для двух видов - Pascal

Узнай цену своей работы

Формулировка задачи:

Возможно как-то неправильно назвал тему, но вот суть:
Во время исследований, посвященных появлению жизни на планете Олимпия, учеными было сделано несколько сенсационных открытий: Все живые организмы планеты происходят от бактерии Bitozoria Programulis. Эволюция происходила шаг за шагом (по предположению ученых – во время изменения климата на планете). На каждом шаге эволюции из каждого вида образовывались ровно два подвида, а предыдущий вид исчезал. Если считать появление бактерии Bitozoria Programulis первым шагом эволюции, то существующие сейчас живые организмы находятся на N-ом шаге. Чтобы не придумывать названия во время исследований, ученые пронумеровали все виды организмов, которые когда-либо существовали на планете. Для этого они нарисовали дерево эволюции с корнем Bitozoria Programulis, которая получила номер 1. Далее нумеровали виды каждого шага эволюции слева направо. Таким образом непосредственные подвиды Bitozoria Programulis получили номера 2 и 3. Следующими были занумерованы виды третьего шага эволюции – подвиды вида 2 получили номера 4 и 5, а вида 3 – номера 6 и 7, и т.д. Напишите программу, которая по номерам двух видов вычислит номер вида их ближайшего общего предка в дереве эволюции. Входные данные В первой строке входного файла INPUT.TXT записано целое число N (1 ≤ N ≤ 60) – количество этапов эволюции, которые произошли на планете Олимпия до текущего времени. Вторая и третья строки содержат по одному натуральному числу, которые представляют номера видов, для которых требуется найти номер их ближайшего общего предка. Выходные данные В выходной файл OUTPUT.TXT выведите одно натуральное число – номер ближайшего предка для двух видов.
Условие
var n,a,b:longint;
begin
  readln(n,a,b);
  repeat
    a:=a div 2;
    b:=b div 2;
  until a=b;
  writeln(a);
end.
Как решил я Подозреваю, что там длинная арифметика, но не на первом же тесте такие большие числа. В чём еще может быть ошибка

Решение задачи: «Выведите одно натуральное число – номер ближайшего предка для двух видов»

textual
Листинг программы
type
  ExtRec = packed record m: uint64; p: smallint end;
var
  f: extended; first: ExtRec absolute f;
  s: extended; second: ExtRec absolute s;

Объяснение кода листинга программы

  1. Определяется пользовательский тип ExtRec с помощью ключевого слова type, который является записью (record) и содержит два поля: m типа uint64 и p типа smallint.
  2. Объявляются переменные: f типа extended и first типа ExtRec с помощью ключевого слова var, где first ассоциируется с f с помощью ключевого слова absolute. Это означает, что first и f будут использовать одно и то же место в памяти для хранения данных.
  3. Объявляются переменные: s типа extended и second типа ExtRec с помощью ключевого слова var, где second ассоциируется с s с помощью ключевого слова absolute. Это означает, что second и s будут использовать одно и то же место в памяти для хранения данных.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

14   голосов , оценка 3.929 из 5
Похожие ответы