Чтобы решить задачу, давайте разберем этапы очистки последовательности натуральных чисел и определим, какое число окажется на позиции \( p \).
Исходная последовательность: Начнем с натуральных чисел 1, 2, 3, 4, 5, 6, 7, 8, 9, ...
Удаление четных чисел: После того как начальник отдела стер все числа, делящиеся на 2, в списке останутся только нечетные числа: \( 1, 3, 5, 7, 9, 11, 13, 15, 17, \ldots \)
Удаление чисел, делящихся на 3: Теперь нам нужно удалить числа, делящиеся на 3 из оставшихся. В последовательности нечетных чисел это будут: \( 3, 9, 15, \ldots \) Остальные нечетные числа, которые не делятся на 3, остаются: \( 1, 5, 7, 11, 13, 17, 19, 23, \ldots \)
Теперь, чтобы найти число на позиции \( p \) в этой окончательной последовательности нечетных чисел, мы можем воспользоваться следующим наблюдением:
Нечетные числа образуют последовательность вида \( 1, 3, 5, 7, 9, 11, 13, \ldots \), где \( n \)-е нечетное число можно найти по формуле: \[ \text{n-ое нечетное число} = 2 \times n - 1 \]
Затем нужно отфильтровать удаленные из списка числа, делящиеся на 3.
Таким образом, после удаления чисел, делящихся на 3, объём оставшейся последовательности можно вычислить. Если \( p \) - это позиция, которую мы ищем, то число в позиции \( p \) можно найти через отбор нечетных чисел и исключение нечетных чисел, которые делятся на 3.
Реализация алгоритма:
Чтобы найти из оставшихся чисел на позиции \( p \), можно воспользоваться циклом, который будет искать нужное значение, проверяя каждое нечетное число на принадлежность к множеству.
Вот подход к решению:
def find_nth_number(n):
count = 0
current = 1
while True:
if current % 2 != 0 and current % 3 != 0:
count += 1
if count == n:
return current
current += 1
# Вводим значение n
n = int(input().strip())
print(find_nth_number(n))
Такой алгоритм будет эффективно находить \( n \)-ое оставшееся число, учитывая ограничения задачи.
