Вопрос задан 30.10.2018 в 02:45. Предмет Информатика. Спрашивает Латайко Аня.

Нужна Ваша помощь с информатикой Разработайте алгоритм, который переставляет цифры в числе так, что

получается следующее по значению крупное число (пусть число содержит все десять цифр по одному разу). Например 5647382910 получается из 5647382901 перестановкой двух последних цифр. Считать что все цифры находятся уже в массиве. Заранее огромное спасибо;))
0 0
Перейти к ответам

Ответы на вопрос

Внимание! Ответы на вопросы дают живые люди. Они могут содержать ошибочную информацию, заблуждения, а также ответы могут быть сгенерированы нейросетями. Будьте внимательны. Если вы уверены, что ответ неверный, нажмите кнопку "Пожаловаться" под ответом.
Отвечает Калашников Начын.
A = [int(s) for s in input()]a[len(a)-2],a[len(a)-1] = a[len(a)-1],a[len(a)-2]for elem in a:    print(elem, end='')

Что то подобное этому?
0 0
Отвечает нейросеть ChatGpt. Будьте внимательны, ответы нейросети могут содержать ошибочные или выдуманные данные.

Алгоритм для перестановки цифр в числе, чтобы получить следующее по значению крупное число, можно реализовать следующим образом:

1. Найдите самую правую цифру числа (старший розряд). 2. Ищите слева на право первую цифру, которая меньше следующей (левее старшего разряда). Обозначим эту позицию за 'i'. 3. Если такой цифры не найдено, то число является уже максимальным, и алгоритм завершается. 4. Иначе найдите среди цифр, расположенных правее позиции 'i', наименьшую цифру, которая больше цифры в позиции 'i'. Обозначим эту позицию за 'j'. 5. Поменяйте местами цифры в позициях 'i' и 'j'. 6. Отсортируйте цифры справа от 'i' в порядке возрастания. 7. Алгоритм завершен, получено следующее по значению крупное число.

Пример реализации данного алгоритма на языке Python:

```python def next_permutation(number): digits = [int(d) for d in str(number)] # Преобразуем число в массив цифр

# Находим позицию i i = len(digits) - 2 while i >= 0 and digits[i] >= digits[i + 1]: i -= 1 # Если i < 0, то число является максимальным if i < 0: return number # Находим позицию j j = len(digits) - 1 while digits[j] <= digits[i]: j -= 1 # Меняем местами цифры в позициях i и j digits[i], digits[j] = digits[j], digits[i] # Сортируем цифры справа от позиции i digits[i+1:] = sorted(digits[i+1:]) # Преобразуем массив цифр обратно в число и возвращаем его return int(''.join(str(d) for d in digits))

# Пример использования number = 5647382901 next_number = next_permutation(number) print(next_number) ```

Результатом выполнения данного кода будет число 5647382910, как и ожидалось.

0 0

Топ вопросов за вчера в категории Информатика

Последние заданные вопросы в категории Информатика

Задать вопрос