ник2701
12.02.2023 07:10

Задача D. Водопровод с резервной ёмкостью Рассмотрим следующую модель водопровода. Имеется резервная ёмкость объемом V литров. По входной трубе постоянно поступает вода со скоростью d литров в минуту. По выходной трубе жидкость выливается со скоростью b литров в минуту. Выполняется условие, что d < b. В начальный момент времени выход Z из ёмкости перекрыт. В тот момент, когда ёмкость наполняется, выход открывается и вода поступает на выпуск. Так как d < b, то в какой-то момент ёмкость полностью опустеет, и заслонка Z снова закрывается, после чего процесс повторяется снова.

Очевидно, что при этом в работе водопровода случаются паузы, в течение которых происходит заполнение резервной ёмкости. К ним относится и первая пауза, служащая для первичного наполнения ёмкости водой. По техническим причинам требуется, чтобы длина каждой такой паузы не превышала величины p. При этом нас интересует суммарное время t, в течение которого выходная труба была открыта. Количество пауз n при этом должно быть минимальным возможным.

В рассматриваемой модели используются сколь угодно малые доли времени и объема. Считается, что заслонка Z срабатывает мгновенно.

По заданным величинам d, b, t, p требуется найти такой целый объём V, при котором число пауз n было минимально возможным для заданного времени подачи воды t, а среди всех объёмов, обеспечивающих такое время работы подачи воды и такое количество пауз найти самый маленький.

Формат входных данных

В первой строке содержится четыре целых числа d, b, t, p через пробел :

1



1≤ d < b



2



1

0

9

≤2∗10

9

,

1



1≤ t



15000

≤15000,

1



1≤ p



5000

≤5000.

Формат выходных данных

Вывести одно целое число - объем V резервной ёмкости, обеспечивающей необходимые ограничения на подачу воды. Если таких объёмов несколько, вывести минимальный.

Пояснение к примеру 1.

Рассмотрим первый пример из условия. Скорость подачи d равна 5 литров в минуту, скорость выпуска b равна 10 литров в минуту, требуется обеспечить суммарную работу выпуска в течение t = 32 минут, при этом максимальный размер любой паузы не должен превышать p = 8 минут.

Если мы установим объём резервной ёмкости 40 литров, то:

- ровно за 8 минут (что разрешено условием) она наполнится со скоростью 5 литров в минуту;

- далее пойдет процесс выпуска: 40 литров будут выпущены за 4 минуты со скоростью выпуска 10 литров в минуту, но за это время в ёмкость попадёт 4*5 = 20 литров новой воды. Она будет выпущена за 2 минуты, но за это время поступит 2*5 = 10 литров новой воды, которая будет выпущена за 1 минуту и так далее. Так как доли времени и объема могут быть сколь угодно малыми, получим при подсчёте времени работы выпуска следующую сумму: 4 + 2 + 1 + 0.5 + 0.25 + 0.125 + , которая в итоге равна 8. То есть через 8 минут ёмкость полностью опустеет и заслонка закроется. Для того, чтобы время работы выпуска было равно 32 минуты потребуется 32 / 8 = 4 таких цикла, а значит и 4 паузы. За меньшее число пауз работу выпуска в течение 32 минут при существующих ограничениях обеспечить не получится.

Очевидно, что V = 40 литров - максимально возможный разрешённый объём, иначе первая же пауза будет больше допустимой. С другой стороны, если мы попробуем уменьшить объем до 39 литров, то получим:

- первоначальное заполнение будет произведено за 39 / 5 = 7.8 минуты. Далее процесс выпуска будет работать 39/10 + 39/20 + 39/40 + ... = 7.8 минуты. Тогда за 4 цикла выпуск будет работать 31.2 минуты и для обеспечения 32 минут работы выпуска потребуется пятая пауза.

Sample Input 1:

5 10 32 8

Sample Output 1:

40

Sample Input 2:

5 10 30 8

Sample Output 2:

38

Sample Input 3:

127 128 1 1

Sample Output 3:

1
На Python 3


Задача D. Водопровод с резервной ёмкостью Рассмотрим следующую модель водопровода. Имеется резервная

Нажмите на рекламу ниже и сразу увидите ответ
Популярные вопросы:
Ответ:
Юрий210404
07.11.2022 12:55
// PascalABC.NET 3.1, сборка 1200 от 13.03.2016
const
  n=5;
type
  Matrix=array[1..n,1..n] of integer;

procedure DummySchool(var a:Matrix);
begin
  Writeln('Ввод элементов матрицы');
  for var i:=1 to n do begin
    Write(n,' элементов строки ',i,': ');
    for var j:=1 to n do Read(a[i,j]);
    end;
  Writeln('Сформирована матрица ',n,'x',n);
  for var i:=1 to n do begin
    for var j:=1 to n do Write(a[i,j]:5);
    Writeln
    end
end;

begin
  var B:Matrix;
  DummySchool(B);
  var sn:=0;
  var sp:=0;
  for var i:=1 to n do
    for var j:=1 to n do
      if B[i,j]<0 then sn+=B[i,j]
      else
        if B[i,j]>0 then sp+=B[i,j];
  Writeln('Сумма отрицательных ',sn);
  Writeln('Сумма положительных ',sp)
end.

Тестовое решение:
Ввод элементов матрицы
5 элементов строки 1: 6 23 -5 13 9
5 элементов строки 2: 42 0 -38 16 37
5 элементов строки 3: -5 -18 3 11 8
5 элементов строки 4: 9 13 -11 0 3
5 элементов строки 5: 19 -17 0 15 5
Сформирована матрица 5x5
    6   23   -5   13    9
   42    0  -38   16   37
   -5  -18    3   11    8
    9   13  -11    0    3
   19  -17    0   15    5
Сумма отрицательных -94
Сумма положительных 232
0,0(0 оценок)
Ответ:
kotflin
01.12.2021 08:17
После того как мы узнали, что такое уравнение, и научились решать самые простые из них, в которых находили неизвестное слагаемое, уменьшаемое, множитель и т.п., логично познакомиться с уравнениями и других видов. Следующими по очереди идут линейные уравнения, целенаправленное изучение которых начинается на уроках алгебры в 7 классе. Понятно, что сначала надо объяснить, что такое линейное уравнение, дать определение линейного уравнения, его коэффициентов, показать его общий вид. Дальше можно разбираться, сколько решений имеет линейное уравнение в зависимости от значений коэффициентов, и как находятся корни. Это позволит перейти к решению примеров, и тем самым закрепить изученную теорию. В этой статье мы это сделаем: детально остановимся на всех теоретических и практических моментах, касающихся линейных уравнений и их решения. Сразу скажем, что здесь мы будем рассматривать только линейные уравнения с одной переменной, а уже в отдельной статье будем изучать принципы решения линейных уравнений с двумя переменными.
0,0(0 оценок)
Полный доступ
Позволит учиться лучше и быстрее. Неограниченный доступ к базе и ответам от экспертов и ai-bota Оформи подписку
logo
Начни делиться знаниями
Вход Регистрация
Что ты хочешь узнать?
Спроси ai-бота