GridGain corporate blog
Entertaining tasks
Mathematics
November 2017 22

Тройка, семерка, джокер — разбор решения задач из буклета GridGain на конференции Joker 2017

Две недели назад мы были на Java-конференции в Питере — Joker 2017. Уже традиционно пришли туда не с пустыми руками, а с веселыми и сложными задачами, над которыми можно посмеяться и/или поломать голову. Спасибо всем, кто в эти два дня решал задачи, задавал вопросы и предлагал свои оригинальные решения. Поздравляем победителей!

Все задачи верно решили целых три человека:

— Рюрик Крылов (который к тому же сдал корешок из буклета с верными ответами самым первым)
— Евгений Крутень
— Василий Бригинец

Публикуем, как обещали, развернутые решения. Вынесли под спойлер, чтобы свои силы могли попробовать и те, кто пропустил конференцию.



Задача №1




Решение
t — длительность происходящего действия в минутах,
r — количество написанных строк кода за время t,
k — количество кивков за время t.

$t < 60$
$r = 100$
$k = 243$
$f(x) = r / t$
$x = k / t$

$r / t = 1 + sqrt(k / t)$

Произведем замену $1 / t = y$
$ry = 1 + sqrt(ky)$
$ry - 1 =sqrt(ky)$
$r^2 * y^2 - 2ry +1 = ky$
$r^2 * y^2 - (2r +k)y +1=0$

Решаем обычное квадратное уравнение: дискриминант, корень, два возможных решения:
$D = (2r + k)^2 – 4r^2 = 156249$
$sqrt(D) = 395,2834426$
$y = ((2r + k) ± sqrt(D)) / 2r^2$

$y1 = 0,041914172$
$y2 = 0,002385828$

Производим обратную замену:
$t1 = 23,8582787$
$t2 = 419,1417213$

и выбираем один корень, удовлетворяющий условию t1 < 60, который подставляем в уравнение:
$x = k / t1 = 10,18514383$

Ответ: 10,185

Задача №2




Решение
Имеем систему счисления с основанием 10 + 33 = 43



Приводим кириллические числа к десятичному представлению:

ПОСТ = {26, 25, 28, 29} = (((26 * 43) + 25) * 43 + 28) * 43 + 29 = 2114640

Аналогично:

ПОКАЙСЯ = {26, 25, 21, 10, 20, 28, 42} = 168103278466
МОЛИТВА = {23, 25, 22, 19, 29, 12, 10} = 149143339604

ПОКАЙСЯ + МОЛИТВА * ПОСТ = 315384639763481026

Приводим десятичный результат к кириллическому представлению, для этого ищем первый старший разряд, который будет нулевым:

$43^{11} = 929293739471222707 > 315384639763481026$
$43^{10} = 21611482313284249 < 315384639763481026$

Последовательно делим остаток на 43 в степени от 10 до 0:

$315384639763481026 / 43^{10 }= 14$
$12823887377501540 / 43^9 = 25$
$259072079080465 / 43^8 = 22$
$1931672973243 / 43^7 = 7$
$28942695494 / 43^6 = 4$
$3657243298 / 43^5 = 24$
$129040666 / 43^4 = 37$
$2545029 / 43^3 = 32$
$805 / 43^2 = 0$
$805 / 43^1 = 18$
$31 / 43^0 = 31$

{14, 25, 22, 7, 4, 24, 37, 32, 0, 18, 31} = ДОЛ74НЪХ0ЗФ

Ответ: ДОЛ74НЪХ0ЗФ

Задача №3




Решение
С учетом начальных условий подсчитаем количество возможных сочетаний:

Герман: 2 туза из 4 = $С^2_4$ = 6.
Старуха: 2 пики из 9 числовых = $С^2_9$ = 36.
Флоп: 3 карты из оставшихся 48 в колоде = $С^3_{48}$ = 17296.
Всего подходят 6 * 36 * 17296 = 3735936 комбинаций.

Теперь рассмотрим подходящие варианты.

У Германа во всех вариантах также: 2 туза из 4 = $С^2_4$ = 6.
Варианты с рукой старухи:
1) нет 3 и 7 в руке, остается 2 из 7 = $С^2_7$ = 21.
2) одна 3 или 7 в руке, это 2 * 7 сочетаний = 14.
3) и 3 и 7 в руке = 1.

Проверяем, что мы рассмотрели все комбинации 21 + 14 + 1 = 36.

Теперь находим количество подходящих сочетаний для флопа:

1) в колоде осталось 2 туза, 4 тройки и 4 семерки = 2 * 4 * 4 = 32 сочетания.
2) в колоде осталось 2 туза, 3 карты одного числа и 4 другой = 2 * 3 * 4 = 24 сочетания.
3) в колоде осталось 2 туза, 3 тройки и 3 семерки = 2 * 3 * 3 = 18 сочетаний.

Общее количество подходящих сочетаний:
6 * 21 * 32 + 6 * 14 * 24 + 6 * 1 * 18 = 6156

Искомая вероятность 6156 / 3735936 = 0,00164777983348751156336725254394

Ответ: 0,00165 или 0,165 %

Пока ждем появления на канале конференции видео с докладом Вовы Озерова про сериализацию, можно скачать слайды или посмотреть интервью Якова Жданова про то, зачем GridGain поддерживать открытый код, и кто придумывает нам задачи.
+21
6.6k 25
Comments 19
Top of the day