Мини-урок · перед практикой
Потерянная карточка
Вычитаем известные номера из суммы всех карточек.
Как к ней подойти
Научитесь замечать повторяющееся действие и аккуратно собирать результат в цикле for.
Коротко о теме
Цикл for подходит, когда известно, сколько раз нужно повторить действие. Перед циклом задайте начальное значение результата, внутри обновляйте его, а после цикла выводите итог. Проверьте, входит ли последняя граница в range().
Ключевая идея · Сумма прогрессии
Все присутствующие номера сокращаются; остаётся потерянный.
Проверьте перед запуском
- При N=1 других карточек нет; ответ сразу равен 1.
После практики
Сравните свой подход
Ниже - готовое решение, другой способ, если он есть, и важные детали проверки.
Ваше принятое решение
Рекомендуемое решение: Сумма прогрессии
Все присутствующие номера сокращаются; остаётся потерянный.
n = int(input())
missing = n * (n + 1) // 2
for _ in range(n - 1):
missing -= int(input())
print(missing)
Время: O(n). Память: O(1) целых чисел.
Другой способ: Побитовое исключающее ИЛИ
x XOR x равен нулю, поэтому одинаковые номера взаимно уничтожаются.
n = int(input())
missing = 0
for i in range(1, n + 1):
missing ^= i
for _ in range(n - 1):
missing ^= int(input())
print(missing)
Время: O(n). Память: O(1) целых чисел.