Автор: | Методическая комиссия по информатике | Ограничение времени: | 2 сек | |
Входной файл: | input.txt | Ограничение памяти: | 512 Мб | |
Выходной файл: | output.txt | |||
Максимальный балл: | 50 |
Дима недавно поступил на работу в Научно-исследовательский институт числовых последовательностей. Как следует из названия этого института, основным направлением его работы является проведение различных исследований в области числовых последовательностей.
Недавно руководитель отдела, где начал работать Дима, столкнулся с весьма интересной последовательностью чисел a1, a2, …, an, …, которая определяется следующим образом: a1 = 0 и каждое последующее число ai + 1 (i ≥ 1) определяется как наименьшее натуральное число, большее ai, десятичная запись которого не содержит цифр, представленных в десятичной записи ai. Требуется написать программу, которая заданному n вычисляет величину an.
Входной файл содержит целое число n.
Выходной файл должен содержать число an.
1 ≤ n ≤ 500
№ | Входной файл (input.txt ) |
Выходной файл (output.txt ) |
---|---|---|
1 |
|
|
2 |
|
|
Решение задачи предполагает нахождение элементов последовательности, описанной в условии, в порядке перечисления.
Заметим, что каждое число последовательности обладает следующим свойством: в десятичной записи все его цифры, кроме первой, равны. Действительно, предположим, что в некотором элементе последовательности найдутся две различные цифры, ни одна из которых не стоит на старшей позиции. Тогда большую из них можно уменьшить и при этом число по-прежнему будет больше предыдущего элемента последовательности. Получили противоречие.
Таким образом, для нахождения следующего числа достаточно перебрать первую цифру числа, вторую цифру, а также его длину (количество цифр очередного числа равно или на единицу больше количества цифр предыдущего числа последовательности). После этого необходимо найти наименьшее из чисел, удовлетворяющих требованием задачи (множества цифр очередного числа и предыдущего числа последовательности не должны пересекаться).