Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Информатика олимп задача

Боба Жориков Ученик (143), открыт 7 часов назад
Петя и Миша очень сильно любят собирать грибы. Недавно Петя нашел в лесу поляну, на которой растут опята. Так как поляна находится далеко от жилых домов, то туда никто не ходит. Ребята решили, что они будут теперь собирать грибы только на этой поляне. Чтобы не мешать друг другу, они договорились, что Петя будет собирать грибы по субботам, а Миша – по воскресеньям. Корзина Пети вмещает P грибов, корзина Миши – M грибов. Каждый из мальчиков уходит домой, когда корзина наполняется полностью. Известно, что после каждой ночи, на поляне вырастает K новых грибов. После очередного сбора грибов Петей, на поляне осталось X грибов. Необходимо определить через сколько дней после этого на поляне будет расти не менее Z грибов. Формат ввода На вход программе в одной строке подается пять целых числа, записанные через пробел P, M, К, Х, Z (1≤ P, M, К, Х, Z ≤1109). Формат вывода Вывести одно целое число – количество дней, через которое на поляне будет расти нужное количество грибов. Если такое не случится никогда, вывести число -1. На c++
1 ответ
Снежный Ветер Мастер (1923) 7 часов назад
#include <iostream>

using namespace std;

int main() {
long long p, m, k, x, z;
cin >> p >> m >> k >> x >> z;

long long days = 0;
while (x < z) {
days++;
x += k;
if (days > 100000) { // Предотвращение бесконечного цикла
days = -1;
break;
}
}

cout << days << endl;
return 0;
}
Пояснение кода:

Ввод данных: Программа считывает пять целых чисел, представляющих параметры задачи: P (вместимость корзины Пети), M (вместимость корзины Миши), K (количество грибов, вырастающих за ночь), X (количество грибов после сбора Петей), Z (минимальное требуемое количество грибов).

Цикл while: Программа использует цикл while, чтобы моделировать рост грибов со временем. Цикл продолжается до тех пор, пока количество грибов (x) не станет не меньше, чем Z.

Рост грибов: Внутри цикла к количеству грибов (x) добавляется количество грибов, вырастающих за ночь (k).

Проверка на бесконечный цикл: Добавлена проверка if (days > 100000) для предотвращения ситуации, когда количество грибов никогда не достигнет Z. В этом случае переменная days устанавливается в -1.

Вывод результата: Программа выводит количество дней (days), за которое количество грибов достигнет или превысит Z. Если же за 100000 дней это не произошло, выводится -1.

Важно: В этой задаче не учитываются сборы Миши по воскресеньям, так как условие задачи фокусируется на моменте, когда на поляне останется X грибов после сбора Пети. Если бы требовалось учитывать сборы обоих мальчиков, логика программы была бы сложнее.
Похожие вопросы