printРабочее место участника

printЗадачи

1702. Двоичные числа

Ограничения: время – 200ms/500ms, память – 32MiB Ввод: input.txt или стандартный ввод Вывод: output.txt или стандартный вывод copy
Послать решение Blockly Посылки Темы Где Обсудить (0) idea

Третьеклассник Вася прочитал в одной книге, что в компьютере используются для вычислений двоичные числа. Так как никаких пояснений в книге не было, Вася предположил, что двоичные числа — это числа, в записи которых используется только цифра 2, т.е. «двоичными» числами будут числа 2, 22, 222, 2222 и т. д. По предположениям Васи все числа в компьютере представляются в виде произведения «двоичных» чисел. Если какое-либо число представить в таком виде нельзя, то используется ближайшее к нему большее число, представимое в виде произведения «двоичных» чисел. Поэтому в килобайте 1024 байта, а не 1000 байт, так как вместо числа 1000 используется число 1024, которое является произведением десяти чисел 2.
Напишите программу, которая для заданного числа `X` находит наименьшее число `Y\ ≥\ X`, представимое в виде произведения «двоичных» чисел. Например, для числа `X=70` таким числом является `Y=2*2*22=88`.
В первой строке содержатся одно целое число `X` (`2\ ≤\ X\ ≤\ 10^18`).
Вывести одно целое число `Y`.

Пример ввода

70

Пример вывода

88
Пояснение: В данной задаче произведением считается значение, полученное в результате умножения одного или более чисел, то есть в предельном случае может состоять из одного "двоичного" числа.
Для `X=21` ответ равен 22.
loading