В
Все
М
Математика
О
ОБЖ
У
Українська мова
Х
Химия
Д
Другие предметы
Н
Немецкий язык
Б
Беларуская мова
М
Музыка
Э
Экономика
Ф
Физика
Б
Биология
О
Окружающий мир
У
Українська література
Р
Русский язык
Ф
Французский язык
П
Психология
О
Обществознание
А
Алгебра
М
МХК
Г
География
И
Информатика
П
Право
А
Английский язык
Г
Геометрия
Қ
Қазақ тiлi
Л
Литература
И
История
Nastya0bendy
Nastya0bendy
17.01.2021 02:57 •  Информатика

Настоящий ученый должен уметь быстро перебирать в голове разные варианты решения . архимед для развития этого навыка использовал следующее : записывал трехназчное число и старался как можно быстрее получить из него все числа, какие можно, с перестановки его цифр. напишите программу, которая на основе трёхзначного числа находит все числа, образуемые путём перестановки цифр исходного числа. формат входных данных вводится целое число n (100≤n≤999). формат выходных данных требуется вывести искомые числа, каждое на новой строке. примечания при поиске чисел-перестановок может так случиться, что некоторые числа будут повторяться. например, из числа 344 можно получить 434 двумя поменять местами первую и вторую цифры и поменять местами первую и третью цифры. в таких случаях допускается как выводить повторяющиеся числа несколько раз, так и вывести их лишь раз. кроме того, во втором примере стоит обратить внимание на то, что ведущий 0 в числе 44 не отображается. в программе-решении требуется выводить «44», а не «044». , программу надо сделать на питонне

Показать ответ
Ответ:
lubivyjn
lubivyjn
09.10.2020 07:39
Решение

В питоне есть хороший модуль itertools. В нём есть комбинаторные функции - перестановки, размещения и куча других классных вещей. Давай вызовем itertools.permutations, передадим туда твоё число как строку и длину перестановок - 3:

permutations('123', 3) --> 123 132 213 231 312 321

permutations('100', 3) --> 100 100 10 1 10 1

Очередная перестановка, формально, представляется в виде списка. Переведём в строку: ''.join(i)

...И уберём ведущие нули: .lstrip('0')


Код

import itertools


for i in itertools.permutations(input(), 3):

   print(''.join(i).lstrip('0'))

# Ввод:

# 100

# Вывод:

# 100

# 100

# 10

# 1

# 10

# 1



Условие задачи позволяет нам выводить повторяющиеся перестановки. Если нас это не устраивает, мы можем добавить проверку уникальности через set:

import itertools


checker = set()

for i in itertools.permutations(input(), 3):

   s = ''.join(i).lstrip('0')

   if not(s in checker):

       print(s)

       checker.add(s)

# Ввод:

# 100

# Вывод:

# 100

# 10

# 1

0,0(0 оценок)
Популярные вопросы: Информатика
Полный доступ
Позволит учиться лучше и быстрее. Неограниченный доступ к базе и ответам от экспертов и ai-bota Оформи подписку
logo
Начни делиться знаниями
Вход Регистрация
Что ты хочешь узнать?
Спроси ai-бота