Ограничения: время – 200ms/500ms, память – 32MiB Ввод: input.txt или стандартный ввод Вывод: output.txt или стандартный вывод
Послать решение Blockly Посылки Темы Где Обсудить (0)
Третьеклассник Вася прочитал в одной книге, что в компьютере используются
для вычислений двоичные числа. Так как никаких пояснений в книге не было,
Вася предположил, что двоичные числа — это числа, в записи которых используется только цифра 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`.
Пояснение: В данной задаче произведением считается значение, полученное в результате умножения одного или более чисел, то есть в предельном случае может состоять из одного "двоичного" числа.
Для
`X=21` ответ равен 22.