Top.Mail.Ru
Ответы

Помогите решить задачу Python

На вход программе с клавиатуры подается натуральное число N, затем вводятся N чисел, каждое с новой строки. Программа в любом порядке выводит на экран все общие цифры среди введенных чисел. Если у чисел не нашлось общих цифр, то программа выводит на экран строку «Нет общих цифр».

Пример входных данных 1:

3

123

12345

23980

Пример выходных данных 1:

2 3

Пример входных данных 2:

4

12

34

567

890

Пример выходных данных 2:

Общих цифр нет

По дате
По рейтингу
Аватар пользователя
nebulous_7604Ученик
10мес

Вот решение задачи на Python:

python

1234567891011121314151617181920212223242526272829
# Считываем количество чисел
n = int(input())

# Список для хранения наборов цифр каждого числа
digit_sets = []

# Считываем каждое число и преобразуем его в набор цифр
for _ in range(n):
    number = input().strip()
    # Создаём набор цифр из строки числа
    digits = set(number)
    digit_sets.append(digits)

# Находим пересечение всех наборов цифр (общие цифры)
if digit_sets:
    common_digits = digit_sets[0]
    for digits in digit_sets[1:]:
        common_digits &= digits  # Пересечение множеств
else:
    common_digits = set()

# Выводим результат
if common_digits:
    # Сортируем цифры для предсказуемого вывода и объединяем в строку
    result = ' '.join(sorted(common_digits))
    print(result)
else:
    print("Нет общих цифр")

Пояснение работы программы:

  1. Ввод количества чисел
    Сначала считываем натуральное число N — количество чисел, которые будут введены.

  2. Сбор цифр каждого числа
    Для каждого из N чисел:

    • считываем число как строку (чтобы легко получить отдельные цифры);

    • преобразуем строку в множество (set) цифр — это автоматически убирает дубликаты внутри одного числа;

    • сохраняем это множество в список digit_sets.

  3. Поиск общих цифр

    • Берём первое множество цифр как начальное значение common_digits.

    • Последовательно пересекаем его с остальными множествами через операцию &= (пересечение множеств).

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

  4. Вывод результата

    • Если common_digits не пустое, сортируем цифры (для упорядоченного вывода) и выводим их через пробел.

    • Если общих цифр нет, выводим фразу «Нет общих цифр».

Примеры работы:

Пример 1:
Вход:

12345
3
123
12345
23980

Процесс:

  • digit_sets = [{'1','2','3'}, {'1','2','3','4','5'}, {'2','3','9','8','0'}]

  • Пересечение: {'2','3'}
    Выход:

12
2 3

Пример 2:
Вход:

123456
4
12
34
567
890

Процесс:

  • digit_sets = [{'1','2'}, {'3','4'}, {'5','6','7'}, {'8','9','0'}]

  • Пересечение пусто
    Выход:

1
Нет общих цифр

Аватар пользователя
iurii_semykinОракул
10мес
12345
from functools import reduce
n=int(input('N='))
res=reduce(lambda x,y: x & set(y), [list(input('x['+str(i)+']='))
                                       for i in range(n) ],set(list('0123456789')))
print(('нет общих цифр',res)[len(res)>0])

Аватар пользователя
nebulous_7604Ученик
10мес

ой я случайно написал решения на джава скрипт, но зато ты теперь видешь разницу в длине между этими 2умя языками програмирования

Аватар пользователя
nebulous_7604Ученик
10мес

спс.бо

Аватар пользователя
vov4ik_223Мастер
10мес

Начинай, а если появятся вопросы, задавай.

Аватар пользователя
ruthless_003Ученик
10мес

Пошёл нафиг лошара, я в комп играю а ты уроки 🤣

Аватар пользователя
user_312091886Ученик
10мес
Изменено



Видео по теме