а) Голоса можно дробить.
Из условия понятно, что нужно найти такое минимальное число акций, которое позволило бы нам получить в совете директоров ровно
мест, даже если все остальные акционеры сговорятся и будут голосовать так, чтобы нам помешать. Эквивалентно, мы можем допустить избрание не более
чужих кандидатов. Остальным акционерам удастся нам помешать, если они снабдят
своих кандидатов количеством голосов, не меньшим, чем хотя бы у одного из наших
кандидатов: тогда этот наш кандидат рискует не быть избранным, а мы рискуем не получить
желанных мест.
Отсюда видно, что наша победа или поражение определяется количеством голосов у самого слабого нашего кандидата. Поэтому при любом числе имеющихся у нас голосов оптимальным распределением их между кандидатами является распределение поровну (при фиксированной сумме
чисел мы максимизируем наименьшее из них). Таким образом, имея
голосов, мы отдадим за каждого из наших кандидатов
голосов. Стараясь помешать нам, остальные акционеры будут проводить
своих кандидатов, за каждого из которых они отдадут
голосов: поскольку им необходимо, чтобы каждый из их кандидатов набрал голосов не меньше, чем какой-нибудь из наших, их успех также определяется количеством голосов у самого слабого их кандидата, и поэтому они также будут распределять голоса между своими кандидатами поровну.
Наших голосов хватит, чтобы гарантированно провести всех наших кандидатов, тогда и только тогда, когда
: в этом случае любой из их кандидатов наберет строго меньше любого их наших. Решая это неравенство относительно
, получим
. Число акций, в отличие от числа голосов, конечно, целое, поэтому минимальное число акций, удовлетворяющее этом условию:
, где квадратные скобки обозначают целую часть числа.
б) За каждого из кандидатов можно подать только целое число голосов.
Все по-прежнему определяется количеством голосов, поданным за самого слабого из наших кандидатов, только теперь это количество равно
. Остаток от деления
на
-- голоса, которые мы как-то разделим между некоторыми (не всеми) из наших кандидатов, но это уже ни на что не повлияет. Аналогично, за самого слабого из кандидатов противника будет подано
голосов. Необходимым и достаточным условием нашей победы является неравенство
. Нам нужно найти минимальное
, удовлетворяющее этому неравенству (не забываем, что
целое). Просто выразить отсюда
не получится, однако мы можем описать алгоритм отыскания этого минимального
. Для этого рассмотрим пару свойств функции «целая часть числа»:
В их истинности нетрудно убедиться, мысленно разделив координатный луч на отрезки, ограниченные целыми числами. Функция «целая часть числа» переводит это число в левую границу отрезка, на котором находится наше число. Если
, то
и
лежат на разных отрезках, причем
правее. Если
, то
лежит правее, но эти числа либо лежат на одном отрезке, либо на разных.
Если
-- решение нашей задачи (
удовлетворяет условию
), то для этого
выполняется
, что, как мы помним из пункта а), эквивалентно условию
; минимальное
, удовлетворяющее этому условию, равно
. Однако из выполнения условия
не следует нужного нам
, а следует только
.
Возьмем
и подставим в это неравенство. Если оно выполняется как строгое неравенство, значит данное
-- искомое: имея
акций, мы точно проведём
своих кандидатов, а
акций уже не будут удовлетворять необходимому условию.
Что же делать, если при данном
неравенство выполняется как равенство? Увеличим
на единицу. Нетрудно убедиться в том, что левая часть вырастет больше, чем на единицу, а правая часть уменьшится. Отсюда неизбежно следует, что неравенство станет строгим. Значит,
-- искомое.
Выполним этот алгоритм для двух наборов параметров из условия:
1)
.
Раз целые части получились одинаковые, надо увеличить число акций до 43:
Отметим, что при возможности дробления голосов нам хватило бы 42-х акций.
2)
При данных параметрах минимальное число акций составит 55 как в случае дробления голосов, так и при запрете на дробление.
Вот это - царь :)