Ниже подробное разбор и адаптация алгоритма под заданные условия.
- Что говорит исходный блок-схема
- Проверяем наличие пирожных.
- Если пирожных еще есть, пропускаем две тарелки и кладем одно пирожное на следующую тарелку.
- Затем проверяем снова: есть пирожные или нет, и повторяем до конца.
Из этого следует, что пирожные кладутся на тарелки с номерами 3, 6, 9, 12 и так далее (каждая третья тарелка), пока пирожные заканчиваются.
- Что добавляет Петя (учет того, что не все гости любят клубничные пирожные)
- Перед тем, как положить пирожное на тарелку, нужно проверить, любит ли текущий гость клубничные пирожные.
- Если любит — кладем пирожное.
- Если не любит — не кладем на эту тарелку и переходим к следующей тарелке по той же схеме (следующая тарелка кратна 3: 6, 9, 12, …).
То есть итоговая логика: на тарелки 3, 6, 9, 12, ... кладем пирожное только если гость на этой тарелке любит клубничные пирожные; иначе пропускаем эту тарелку и идем к следующей по той же схеме.
- Подробное решение (пошагово)
- Пусть initial_stock = количество пирожных, plates = бесконечная последовательность тарелок 3, 6, 9, 12, ...
- Текущее plate = 3
- Пока stock > 0:
- Если гость на тарелке plate любит клубничные пирожные:
- положить пирожное на тарелку plate
- stock = stock - 1
- Иначе:
- не кладем пирожное на plate
- plate = plate + 3 (переходим к следующей тарелке по схеме)
- Если гость на тарелке plate любит клубничные пирожные:
- Конец, когда stock достиг нуля или когда тарелок больше нет (но по схеме тарелки идут бесконечно, рычаг окончания — уменьшение stock до нуля)
- Пример применения Допустим:
- stock = 4
- Предпочтения гостей по тарелкам: на тарелке 3 любит клубничное, на 6 — не любит, на 9 — любит, на 12 — любит.
Ход выполнения:
- plate = 3: любит → кладем (stock = 3)
- plate = 6: не любит → пропускаем
- plate = 9: любит → кладем (stock = 2)
- plate = 12: любит → кладем (stock = 1)
- plate = 15: предположим, гость любит → кладем (stock = 0) Итог: пирожные оказались на тарелках 3, 9, 12, 15 (только где гости любят клубничное и stock позволял).
- Что выдать как ответ
- Результат алгоритма: пирожные кладутся на тарелки с номерами кратными 3 (3, 6, 9, 12, ...), но только если соответствующий гость любит клубничные пирожные. Если гость не любит, пирожное на этой тарелке не кладется; переходим к следующей тарелке по той же схеме.
- Псевдокод (упрощенно, без привязки к языку программирования)
- stock = N (начальное количество пирожных)
- plate = 3
- while stock > 0:
- if guest_on_plate_likes_strawberry(plate): place_pastry_on(plate) stock = stock - 1
- plate = plate + 3
- end
- Важные пояснения
- Если количеством пирожных ограничено, алгоритм остановится на момент, когда stock становится нулем, даже если тарелок ещё много.
- Поскольку исходная схема предполагает “передвигаться по каждой третьей тарелке”, мы сохраняем эту логику и добавляем проверку предпочтения гостя.
Если хотите, могу привести более конкретный пример с заданным количеством пирожных и конкретным списком предпочтений гостей (по каждой тарелке), чтобы увидеть, на каких именно тарелках окажутся пирожные в вашем случае.