Предмет: Информатика,
автор: 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 БАЛЛОВ!!!!!!!
Ответы
Автор ответа:
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;
Похожие вопросы
Предмет: Математика,
автор: sashafree2005
Предмет: Литература,
автор: yshakris2003
Предмет: Русский язык,
автор: danilin2003
Предмет: Математика,
автор: Человек5000
Предмет: Алгебра,
автор: arsenyabaranov