
Ярослав и модифицированная улитка ограничение по времени на тест 3.5 секундограничение по памяти
на тест 256 мегабайтвводстандартный вводвыводстандартный выводВсе мы знаем, как Ярослав любит математику. Когда Ярослав шёл домой с любимого учебного центра M&C, он увидел улитку, которая ползёт по дереву (не спрашивайте, как он это сделал, поздним вечером). Ярослав несколько дней подряд видел эту улитку и заметил очень странную закономерность, что каждый день улитка поднималась на a сантиметров вверх, а ночью опускалась до ближайшего простого числа. Ярославу интересно на какой высоте будет улитка по окончанию k дней, если в начале первого дня улитка была на высоте 2 сантиметра.Входные данныеВ первой и единственной строке входных данных даны 2 целых числа a(1 ≤ a ≤ 1010), k(1 ≤ k ≤ 1000).Выходные данныеВыведите одно целое число на какой высоте будет улитка через k дней.

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

Ответ:
def n(h,t):
i=3
while h%i:
i+=2
if i*i>h: i=h
return i
a,k=map(int,input().split())
h=2
for i in range(1,k):
t=h if h>3 else 3
h+=a
print("день", i, h)
if (h+1)%2: h-=1
while h!=n(h,t):
h-=2
print("ночь", i, h)
print("В конце последнего дня", h+a)
Объяснение:
Оставляю специально с отладочными принтами, чтобы понимали что происходит.
Важно понимать что из условия
"в начале первого дня улитка была на высоте 2 сантиметра."
"на какой высоте будет улитка по окончанию" первого дня? Естественно на 2+a
На какой высоте она будет в конце k-того дня? На высоте k-того утра + a



Чтобы решить данную задачу, нужно вычислить высоту улитки через k дней, исходя из предоставленной закономерности.
Заметим, что улитка каждый день поднимается на a сантиметров и опускается до ближайшего простого числа. Мы можем использовать функцию is_prime(x), которая будет проверять, является ли число x простым.
Итак, для решения задачи, нам нужно выполнить следующие шаги:
- Инициализируем переменные height и current_height со значениями 2 (начальная высота улитки) и 0 соответственно.
- Создаем функцию is_prime(x), которая будет проверять, является ли число x простым. Воспользуемся простым алгоритмом проверки.
- Запускаем цикл от 1 до k (включительно) для каждого дня:
- Увеличиваем current_height на a.
- Если current_height не является простым числом, уменьшаем его до ближайшего меньшего простого числа.
- Выводим current_height.
Вот реализация алгоритма на языке Python:
pythondef is_prime(x):
if x < 2:
return False
for i in range(2, int(x ** 0.5) + 1):
if x % i == 0:
return False
return True
a, k = map(int, input().split())
height = 2
current_height = 0
for _ in range(k):
current_height += a
if not is_prime(current_height):
while not is_prime(current_height):
current_height -= 1
print(current_height)
Этот код считывает значения a и k из стандартного ввода, а затем выводит итоговую высоту улитки после k дней в стандартный вывод.
Пожалуйста, обратите внимание, что предоставленная реализация использует стандартный ввод и вывод. Если вы хотите использовать данное решение в другом окружении, вам может потребоваться адаптировать код для работы с нужными входными и выходными данными.


Похожие вопросы
Топ вопросов за вчера в категории Информатика
Последние заданные вопросы в категории Информатика
-
Математика
-
Литература
-
Алгебра
-
Русский язык
-
Геометрия
-
Английский язык
-
Химия
-
Физика
-
Биология
-
Другие предметы
-
История
-
Обществознание
-
Окружающий мир
-
География
-
Українська мова
-
Информатика
-
Українська література
-
Қазақ тiлi
-
Экономика
-
Музыка
-
Право
-
Беларуская мова
-
Французский язык
-
Немецкий язык
-
МХК
-
ОБЖ
-
Психология
-
Физкультура и спорт
-
Астрономия
-
Кыргыз тили
-
Оʻzbek tili