016. Пасьянс старухи Шапокляк

(Время - 1 сек., память - 16 Мб)

На столе лежат колоды игральных карт. В самой тоненькой колоде – p карт, во второй – p+1, в третьей – p+2, …, в последней – k карт. Старуха Шапокляк раскладывает пасьянс. Беря в руки любую из колод, она, если число карт в ней четное, на место возвращает колоду, наполовину уменьшив число карт в ней (лишние убирает в ящик), а если количество карт в колоде нечетное, то утраивает их количество и добавляет еще одну карту, а уже тогда кладет колоду на стол (карт у нее в ящике для этой операции достаточно). Если в какой-то колоде остается две карты, она больше ее не трогает. Пасьянс сходится, если во всех колодах остается по две карты.

Требуется написать программу, которая определит сходится ли пасьянс, и если сходится – сколько раз должна старуха Шапокляк брать со стола карты.

Входные данные

В единственной строке входного файла input.txt записаны через пробел два числа p и k (2 < p < k < 1000).

Выходные данные

В единственную строку выходного файла output.txt нужно вывести 0, если пасьянс не сходится, и, если сходится, количество «ходов» старухи Шапокляк.

Примеры

input.txt

output.txt

1

2 3

6

2

5 8

28

Разбор

.

Программа на Паскале

var

  p, k : integer;

  s, t : longint;

begin

  assign(input,'input.txt'); reset(input);

  assign(output,'output.txt'); rewrite(output);

  read(p,k);

  s:=0;

  while p<=k do

  begin

    t:=p;

    while t>2 do

    begin

      s:=s+1;

      if odd(t) then t:=3*t+1 else t:=t div 2;

    end;

    p:=p+1

  end;

  write(s);

end.

Программа на С

 

Информация о задаче

Автор, источник

 

Олимпиада

Муниципальный этап олимпиады в Ханты-Мансийском АО-Югре, 2008-2009 уч. год, 3-й тур

Тематика

Математическое моделирование

Примерная сложность

25%

Ссылки в Интернете

Условие, сдача решения – http://acmu.ru/index.asp?main=task&id_task=521

Наш сайт

Сдача решения –

Тесты – Rar

Задача подготовлена

Автор, дата –  Алексеев А.В., 24.05.2012