Форум программистов, компьютерный форум, киберфорум
Наши страницы
Pascal (Паскаль)
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.71/7: Рейтинг темы: голосов - 7, средняя оценка - 4.71
Aleks54321
1 / 1 / 0
Регистрация: 24.03.2015
Сообщений: 50
1

Используя две емкости 3 л. и 5 л., нужно набрать в столитровую бочку M литров воды

28.10.2015, 21:44. Просмотров 1294. Ответов 6
Метки нет (Все метки)

Используя две емкости 3л і 5л нужно набрать в столитровую бочку бочку M литров воды, при этом сумарное количество переливаний в бочку и с бочки должно быть минимальной. Например, Что бы набрать 7 литров воды: два раза выливаем в бочку по 5л, потом отливаем один раз 3л, всего три переливаний.

Входные данные:

Целое неотрицательное число M. 0 ≤ M ≤ 100.

Входные данные

7

Выходные данные

3

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

0
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.10.2015, 21:44
Ответы с готовыми решениями:

В двухсот (200) литровую бочку воды ежедневно по 1% от первоначальных 50 литров доливают воду
В двухсот (200) литровую бочку воды ежедневно по 1% от первоначальных 50 литров доливают воду. 1....

Разделить 12 литров воды поровну с помощью 2 пустых ведер с емкостью 8 и 5 литров
Имеется 12 литров воды,нужно разделить поровну с помощью 2 пустых ведер с емкостью 8 и 5 литров.

Выяснить, в которую бочку поместится больше воды
Обращаюсь к вам, как к профессионалам. Задачка на функции и процедуры. Нужно составить...

Как набрать 7 литров воды при помощи 3 и 8 литровых банок?
доброго времени суток! помогите пожалуйста составить алгоритм решения задачи: Как набрать 7 литров...

В посуде А (c) литров воды, в посуде В (х) литров воды. Из А сосуды вылили половину воды в сосуд В , потом из
В посуде А (c) литров воды, в посуде В (х) литров воды. Из А сосуды вылили половину воды в сосуд В...

6
Капинус
2 / 2 / 1
Регистрация: 05.08.2017
Сообщений: 60
18.10.2017, 11:00 2
Здесь по-видимому нужно использовать алгоритм Евклида.
Пока тоже сижу думаю над ней.
0
кот Бегемот
Платежеспособный зверь
8585 / 3998 / 1568
Регистрация: 28.10.2009
Сообщений: 10,474
18.10.2017, 21:43 3
Лучший ответ Сообщение было отмечено ZX Spectrum-128 как решение

Решение

Цитата Сообщение от Капинус Посмотреть сообщение
Здесь по-видимому нужно использовать алгоритм Евклида
Да ладно...

Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
var
os5,k,n,r:integer;
begin
readln(n);
os5:=n mod 5;
k:=n div 5;
case os5 of
0:r:=k;
1:r:=k+1;
2:r:=k+2;
3:r:=k+1;
4:r:=k+2;
end;
writeln(r);
end.
1
Капинус
2 / 2 / 1
Регистрация: 05.08.2017
Сообщений: 60
19.10.2017, 11:03 4
Цитата Сообщение от кот Бегемот Посмотреть сообщение
Да ладно...
Cпасибо. У меня немножко другая программа.
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
var m,k:byte;
begin
readln (m);
 k:=0;
   while m div 5>0 do
   begin
  m:=m-5;
  inc(k);
 end;
 if (m=5) or (m=3) then k:=1;
 if (m mod 5=1) or (m mod 5=3) then inc(k) else
 if (m mod 5=2) or (m mod 5=4) then inc(k,2);
 writeln (k);
readln
end.
Но есть проблема: что у вас, что у меня при вводе числа 4 выводит 2, а при вводе 1 - выводит 1
Получить 4 можно: 5+5-3-3, 3+3+3-5 ну и ещё. Всего 4 операции
Получить 1 можно: 3+3-5 всего 3 операции.

Добавлено через 1 час 54 минуты
Этот вариант проходит на 95%.
Может кто знает где нужно доделать. Спасибо
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
var m,k:byte;
begin
readln (m);
if m=0 then writeln ('0') else
if m=1 then writeln ('3') else
if m=4 then writeln ('4') else
begin
 k:=0;
   while m div 5>0 do
   begin
  m:=m-5;
 k:=k+1;
 end;
 if (m=5) or (m=3) then k:=1;
 if (m mod 5=1) or (m mod 5=3) then inc(k) else
 if (m mod 5=2) or (m mod 5=4) then inc(k,2);
 writeln (k);
 end;
end.
0
кот Бегемот
Платежеспособный зверь
8585 / 3998 / 1568
Регистрация: 28.10.2009
Сообщений: 10,474
19.10.2017, 12:43 5
Да, программа писалась из расчета, что минимальный объём 5 литров. Исключения составляют:
1 л - 3 переливания
4 л- 4 переливания
Все остальные числа вписываются в мою формулу для этих данных (0..100)

Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
var
os5,k,n,r:integer;
begin
readln(n);
os5:=n mod 5;
k:=n div 5;
case os5 of
0:r:=k;
1:r:=k+1;
2:r:=k+2;
3:r:=k+1;
4:r:=k+2;
end;
if n=1 then r:=3 else if n=4 then r:=4;
writeln(r);
end.
0
Капинус
2 / 2 / 1
Регистрация: 05.08.2017
Сообщений: 60
19.10.2017, 14:57 6
А вот и мой вариант, тоже имеющий право на существования (проходит на 100%)
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
var m,k:byte;
begin
readln (m);
if m=0 then writeln ('0') else
if m=1 then writeln ('3') else
if m=4 then writeln ('4') else
if (m=5) or (m=3) then writeln ('1') else
begin
 k:=0;
   while m div 5>0 do
   begin
  m:=m-5;
 k:=k+1;
 end;
 if (m mod 5=1) or (m mod 5=3) then inc(k) else
 if (m mod 5=2) or (m mod 5=4) then inc(k,2);
 writeln (k);
 end;
end.
0
кот Бегемот
Платежеспособный зверь
8585 / 3998 / 1568
Регистрация: 28.10.2009
Сообщений: 10,474
19.10.2017, 16:04 7
Ваши команды с 10 по 14 есть ничто иное как две мои команды:
k:= m div 5
m:=m mod 5
0
19.10.2017, 16:04
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.10.2017, 16:04

В сосуде А с литров воды, в сосуде В х литров воды
В сосуде А с литров воды, в сосуде В х литров воды. Из сосуда А вылили половину воды в сосуд В,...

Бассейн Сколько литров воды зальётся за минуту
2) В бассейн, в первую секунду было залито 15 литров воды, во вторую 20 литров, в третью секунду...

Уровень воды в емкости
Уровень воды в емкости - h поток воды - q площадь емкости - S h(t)=\frac{1}{S}\int_{0}^{t}q(t)dt...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru