ENG  RUSTimus Online Judge
Online Judge
Задачи
Авторы
Соревнования
О системе
Часто задаваемые вопросы
Новости сайта
Форум
Ссылки
Архив задач
Отправить на проверку
Состояние проверки
Руководство
Регистрация
Исправить данные
Рейтинг авторов
Текущее соревнование
Расписание
Прошедшие соревнования
Правила

2223. Так много найдено на дороге...

Ограничение времени: 1.0 секунды
Ограничение памяти: 256 МБ
Нечасто случается найти на дороге функцию, особенно с использованием побитовых операций, но Вадиму удалось это сделать. На этот раз ему попалась следующая функция:
Python C++
def f(x, y):
    if y == 0:
        return x
    return f(x ^ y, (x & y) << 1)

int f(int x, int y) {
    if (y == 0)
        return x;
    return f(x ^ y, (x & y) << 1);
}
Поскольку эта функция от двух аргументов, Вадим взял найденные ранее на дороге два числа X и Y и решил вызвать f(X,Y) ровно один раз. Но у него нет под рукой никакой электроники, которая могла бы выполнить этот код, так что он просит помощи у вас. Результат выполнения Вадима не интересует, ему нужно знать, закончит ли когда-либо работу эта функция, и если да, то сколько запусков этой функции произойдёт перед этим. Ответьте на этот вопрос.

Исходные данные

В первой строке вводится целое число X в двоичной системе счисления (1 ≤ X < 21 000 000).
Во второй строке вводится целое число Y в двоичной системе счисления (1 ≤ Y < 21 000 000).

Результат

Выведите «infinity», если с данными аргументами функция будет работать бесконечно, в противном случае выведите количество запусков функции f при единственном вызове f(X,Y).

Примеры

исходные данныерезультат
1011
100
2
101
1
3

Замечания

В коде функции на C++ под int подразумевается любое целое число.
Автор задачи: Вадим Баринов
Источник задачи: Чемпионат Урала 2025