Торт
На свой день рождения Петя купил красивый и вкусный торт, который имел идеально круглую форму. Петя не знал, сколько гостей придет на его день рождения, поэтому вынужден был разработать алгоритм, согласно которому он сможет быстро разрезать торт на N равных частей. Следует учесть, что разрезы торта можно производить как по радиусу, так и по диаметру.
Помогите Пете решить эту задачу, определив наименьшее число разрезов торта
по заданному числу гостей (гостей >= 1).
Напишите функцию public static int solve(int guests) для решения данной задачи.
Доп. задание: Попробуйте решить задачу, не используя условий и тернарных операторов ("?:").
Решение:
public static int solve(int guests) {
return (guests + 1) / (guests % 2 + 1);
}
2 — математически твоя формула равна (guests + (guests * (guests % 2))) / 2, но в твоей формуле, если гостей > 181, 183,… 359, 360, 361, 362 и т.д., то выбрасывается исключение деления на ноль.
3 — поскольку здесь целые числа, деление дает целый результат, поэтому программа будет работать неверно (когда guests = 100, то программа возвращает 180 / (360 / 100) = 180 / 3 = 60).
i solve(i)
1 0
2 1
3 3
4 2
5 5
6 3
7 7
8 4
Должно быть:
i solve(i)
1 1
2 3
3 2
4 5
5 3
6 7
7 4
8 9
я понял о чем ты)
i solve(i)
1 1
2 1
3 3
4 2
5 5