Предмет: Информатика, автор: kasimovsaat

Вася записал ряд натуральных чисел в порядке возрастания: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11,
12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23 и т.д. Затем вычеркнул из него все числа, в
которых имеется хотя бы две одинаковых цифры, и получил последовательность: 1, 2, 3, 4,
5, 6, 7, 8, 9, 10, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 23 и т.д.
Вам необходимо по заданному N найти N-ое по счету число в получившейся
последовательности.
Формат входных данных
В единственной строке входного файла записано натуральное число N (1 ≤ N ≤ 10000).
Формат выходных данных
Вывести N-ое по счету число без одинаковых цифр.

Пример:
B.in B.out
100 123
Помогите срочноооооо ДАЮ 100 БАЛЛОВ!!!!!!!

Ответы

Автор ответа: danarailova550
1

Ответ:

Решение в лоб.

В цикле искать числа без повторяющихся цифр, N-ное вывести.

Как проверять, что число с повторяющимися цифрами?

Создать массив bool на 10 элементов, разбивать число на цифры (через деление на десять с остатком) , и потом проверять, в соотвествующем индексе массива (0-9) есть true - значит такая цифра уже есть и число содержит повторяющиеся цифры, если нет, то записывать true.

long long int found_number = 1;

long long int n = 0;

for (long long int i = 1; ; ++i) {

if (!has_repeated_digits(i)) {

++n;

if (n == N) {

found_number = i;

break;

}

}

}

std::cout << found_number << std::endl;

Похожие вопросы