Як видно з назви можна припустити, ця проблема частково навіяно ввічливі короткозорий Drunk Bot по @NP
Наш бідний бот розміщений на декартовій сітці біля початку, і через кожну хвилину він рухається по 1 одиниці в одному з чотирьох напрямків (вгору, вниз, вліво, вправо).
Через п’ять хвилин усі приховані міни в сітці активізуються, вбиваючи будь-якого бідного бота, який може опинитися над ними. Шахти розташовані на всіх цілих координатах, що задовольняють рівнянню | y | = | x |.
Виклик
Вам буде надано n , кількість хвилин до вибуху мін, як вхід, так і як вихід, ви повинні знайти ймовірність того, що бот загинув .
Введення : Натуральне число, що представляє n .
Вихід : Нехай ймовірність того, що бот загинув, буде p / q, де p і q є відносно простими цілими числами (q не може бути 0, але p може). Вихід p.
Правила
- Ваш алгоритм не повинен працювати в експоненціальний або більш високий час. Він в ідеалі повинен працювати в поліноміальний час або менше.
- Ваш алгоритм повинен вміти обробляти введення
n
<20 (може бути відрегульовано, якщо занадто важко) за розумний час. - Це проблема з кодовим гольфом .
- Ітерація над усіма можливостями для даної російської мови , безумовно, не буде прийнята як відповідь.
Випробування
1
->0
2
->3
4
->39
6
->135
8
->7735
10
->28287
Приклад Розрахунок для n = 6
У нас є 4 можливі рухи: U, D, R та L. Загальна кількість шляхів, які можна було пройти, дорівнює 4 ^ 6, або 4096. Існують 4 можливі випадки, які приземляються уздовж лінії y = x: x, y = ± 1; x, y = ± 2; x, y = ± 3; або x = y = 0. Ми підрахуємо кількість способів закінчення (1,1), (2,2) та (3,3), помножимо їх на 4 для врахування інших квадрантів і додамо це до кількості способів закінчити (0,0).
Випадок 1: Бот закінчується на (3, 3). Для того, щоб бот опинився тут, у нього повинно було бути 3 правильних ходу та 3 вгору. Іншими словами, загальна кількість способів потрапити сюди - це способи переставити літери в послідовності RRRUUU, яка 6 вибирає 3 = 20.
Випадок 2: Бот закінчується на (2,2). Для того, щоб бот опинився тут, у нього могли бути 2 ходи вгору, 3 праворуч і 1 лівий хід; або 2 правильних рухи, 3 вгору і 1 рух вниз. Таким чином, загальна кількість способів потрапити сюди - це сума способів переставити літери в послідовностях RRRLUU та UUUDRR, обидва з яких (6 вибирають 1) * (5 вибирають 2) = 60, загалом 120 можливостей .
Випадок 3: Бот закінчується на рівні (1,1). Для того, щоб бот опинився тут, у нього могли бути: 1 правильний хід, 3 вгору та 2 вниз. У цьому випадку кількість способів переставити літери в послідовності RUUUDD дорівнює (6 виберіть 1) * (5 виберіть 2) = 60.
1 рух вгору, 3 праворуч і 2 лівих. У цьому випадку кількість способів переставити літери в послідовності URRRLL дорівнює (6 виберіть 1) * (5 виберіть 2) = 60.
2 праворухи, 1 лівий хід, 2 вгору та 1 рух вниз. У цьому випадку кількість способів переставити літери в послідовності UUDRRL дорівнює (6 виберіть 1) * (5 виберіть 1) * (4 виберіть 2) = 180.
Таким чином, загальна кількість способів закінчити (1,1) становить 300.
Випадок 4: Бот закінчується на (0,0). Для того, щоб бот опинився тут, він міг мати:
3 правих та 3 лівих. У цьому випадку кількість способів переставити літери в послідовності RRRLLL дорівнює (6 виберіть 3) = 20.
3 вгору і 3 вниз. У цьому випадку кількість способів переставити літери в послідовності UUUDDD становить (6 виберіть 3) = 20.
1 правий хід, 1 хід вліво, 2 вгору і 2 вниз. У цьому випадку кількість способів переставити літери в послідовності RLUUDD дорівнює (6 виберіть 1) * (5 виберіть 1) * (4 виберіть 2) = 180.
1 рух вгору, 1 рух вниз, 2 праворуч і 2 руху вліво. У цьому випадку кількість способів переставити літери в послідовності RRLLUD становить (6 вибираємо 1) * (5 вибираємо 1) * (4 вибираємо 2) = 180.
Таким чином, загальна кількість способів закінчити (0,0) дорівнює 400.
Якщо скласти ці випадки разом, ми отримаємо, що загальна кількість способів опинитися на | y | = | х | дорівнює 4 (20 + 120 + 300) + 400 = 2160. Отже, наша ймовірність дорівнює 2160/4096. Коли ця частка повністю зменшена, вона становить 135/256, тому наша відповідь - 135 .