|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
11.10.2023, 22:57 | #1 |
Пользователь
Регистрация: 22.09.2023
Сообщений: 26
|
Максимальный периметр Си
У Феди есть четыре рейки, из которых он хочет сделать прямоугольную рамку. При этом не обязательно, чтобы все рейки были использованы полностью или частично. Федя может разрезать любую рейку на 2 или более частей, но не умеет соединять рейки или их части для использования полученной склейки в качестве какой-либо стороны рамки. Федя хочет, чтобы рамка имела наибольший периметр.
Напишите программу, определяющую максимальный периметр прямоугольной рамки, которую можно сделать из четырех реек заданных размеров. Первая строка ввода содержит четыре целых числа a, b, c, d в неубывающем порядке (1 ≤ a ≤ b ≤ c ≤ d ≤ 1000) — размеры реек. В первой строке необходимо вывести одно целое число — максимальный периметр рамки. Пример ввода 5 7 12 15 Пример вывода 34 подскажите где ошибка. Нельзя использовать циклы Код:
|
11.10.2023, 23:18 | #2 |
Старожил
Регистрация: 15.02.2010
Сообщений: 15,761
|
5 7 12 26 ваш код дает 34, а ответ 40
5 5 5 60 ваш код дает 20, а ответ 70 Последний раз редактировалось p51x; 12.10.2023 в 07:32. |
11.10.2023, 23:34 | #3 |
МегаМодератор
СуперМодератор
Регистрация: 09.11.2010
Сообщений: 7,342
|
p51x, вроде верные ответы 40 (7+7+13+13) и 70 (30+30+5+5).
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
|
11.10.2023, 23:35 | #4 |
Пользователь
Регистрация: 22.09.2023
Сообщений: 26
|
Как это сделать?
Последний раз редактировалось Faserty; 12.10.2023 в 00:45. |
12.10.2023, 02:23 | #5 |
Пользователь
Регистрация: 22.09.2023
Сообщений: 26
|
BDA, сделал такой код
Код:
|
12.10.2023, 05:45 | #6 |
МегаМодератор
СуперМодератор
Регистрация: 09.11.2010
Сообщений: 7,342
|
Лень было думать, поэтому смухлевал и перебором выбрал лучшие комбинации распределения сторон рамки среди реек и рассчитал соответствующие им периметры:
Код:
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
|
12.10.2023, 07:33 | #7 |
Старожил
Регистрация: 15.02.2010
Сообщений: 15,761
|
BDA, пасиб, что-то у меня смешалось решение ТС и моя идея)
|
12.10.2023, 17:15 | #8 |
Новичок
Джуниор
Регистрация: 12.10.2023
Сообщений: 2
|
Уважаемый, BDA. Не могли бы Вы пояснить, что такое x и y в Вашем коде. Вернее, в комментариях к коду. И что значат такого типа выражения, например: (d & ~1)?
|
12.10.2023, 18:05 | #9 |
МегаМодератор
СуперМодератор
Регистрация: 09.11.2010
Сообщений: 7,342
|
dabur, за x и y обозначены стороны готовой прямоугольной рамки. Неравенства в комментариях определяют из какой именно рейки будет вырезана сторона. Нужно выбрать максимальные целые x и y, которые удовлетворяют неравенствам, и посчитать периметр P = 2 * x + 2 * y. Например, для неравенства 2 * y <= d максимальный y равен d / 2, тогда 2 * y равен d / 2 * 2. Чтобы не делать деления и умножения, нужно просто взять наибольшее четное число, меньшее числа d, что можно сделать, занулив младший бит числа d с помощью маски ~1.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
|
12.10.2023, 18:37 | #10 |
Новичок
Джуниор
Регистрация: 12.10.2023
Сообщений: 2
|
BDA, премного благодарен за подробные объяснения. Буду разбираться, спасибо.
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Найти максимальный элемент на главной диагонали, затем максимальный на побочной диагонали и сравнить их. как написать на C++? | Loshara9 | Помощь студентам | 1 | 25.04.2018 16:02 |
Периметр треугольника | ershowwk | Помощь студентам | 1 | 21.02.2015 18:46 |
Вычислить периметр | Лика505 | Помощь студентам | 6 | 05.04.2012 20:19 |
Периметр n-угольника | Raphael | Помощь студентам | 4 | 17.10.2010 16:21 |
периметр | shelest | Помощь студентам | 1 | 28.11.2009 23:47 |