Помогите решить на Python. Макс решил попробовать себя в профессии и

SEO эксперименты, продвижение и монетизация сайтов, интернет-маркетинг, заработок в сети



RSS Feed Twitter!
Следи за экспериментами:
По почте или RSS

Дата публикации: 14.12.2023

Помогите решить на Python. Макс решил попробовать себя в профессии и


Помогите решить на Python. Макс решил попробовать себя в профессии инженера-нефтяника. Кроме хорошей зарплаты, его контракт имеет ещё одну особенность — работать нужно будет вахтовым методом. График на вахте состоит из чередующихся периодов труда и отдыха, каждый из которых длится D дней. Макс пока не знает, на какой именно из дней выпадет начало его контракта — это может быть любой день любого из периодов. Контракт Макса длится N дней (в него включаются как рабочие дни, так и дни отдыха). Помогите Максу определить, какое минимальное и максимальное количество рабочих дней у него может быть. Входные данные Первая строка содержит целое число D (1≤D≤109 ) — количество дней, составляющих один период. Вторая строка содержит целое число N (2⋅D≤N≤2⋅109 ) — количество дней, в течение которых длится контракт Макса. Выходные данные В первой строке выведите одно целое число — минимальное количество дней, в течение которых Макс может работать. Во второй строке выведите одно целое число — максимальное количество дней, в течение которых Макс может работать. 1)Входные данные: 7 14 Выходные данные: 7 7 2)Входные данные: 4 18 Выходные данные: 8 10

Для решения данной задачи можно использовать следующий алгоритм:

  1. Сначала определим количество полных периодов, которые вмещаются в контракт Макса. Для этого разделим общее количество дней контракта на количество дней в одном периоде и возьмем целую часть от деления. Обозначим это значение как full_periods.
  2. Затем определим количество дней, которые остаются после полных периодов. Для этого вычтем из общего количества дней контракта произведение full_periods на количество дней в одном периоде. Обозначим это значение как remaining_days.
  3. Далее определим минимальное количество рабочих дней. Если remaining_days больше или равно D, то минимальное количество рабочих дней будет равно full_periods умноженному на D. Иначе, минимальное количество рабочих дней будет равно (full_periods - 1) умноженному на D, плюс remaining_days.
  4. Наконец, определим максимальное количество рабочих дней. Если remaining_days больше или равно D, то максимальное количество рабочих дней будет равно full_periods умноженному на D, плюс D. Иначе, максимальное количество рабочих дней будет равно full_periods умноженному на D, плюс remaining_days.

Вот реализация данного алгоритма на языке Python:

def calculate_work_days(D, N):
    full_periods = N // D
    remaining_days = N - full_periods * D

    min_work_days = full_periods * D if remaining_days >= D else (full_periods - 1) * D + remaining_days
    max_work_days = full_periods * D + D if remaining_days >= D else full_periods * D + remaining_days

    return min_work_days, max_work_days

# Примеры использования
print(calculate_work_days(7, 14))  # (7, 7)
print(calculate_work_days(4, 18))  # (8, 10)

В первом примере (7, 14) минимальное и максимальное количество рабочих дней равны 7, так как контракт Макса состоит из одного полного периода.

Во втором примере (4, 18) минимальное количество рабочих дней равно 8, так как контракт Макса состоит из двух полных периодов и остатка в 2 дня. Максимальное количество рабочих дней равно 10, так как контракт Макса состоит из двух полных периодов и дополнительных 4 дней.