Задачи очного тура личного первенства 2010
A. Телефонный номер
Ограничения: время – 200ms/400ms, память – 64MiB Ввод: input.txt или стандартный ввод Вывод: output.txt или стандартный вывод 
Послать решение Blockly Посылки Темы Где Обсудить (0)

Для упрощения запоминания номеров цифры
часто заменяют буквами. На клавиатуре всех современных телефонов есть
соответствующие обозначения, помогающие набирать такие номера.
| Буквы | ABC | DEF | GHI | JKL | MNO | PQRS | TUV | WXYZ |
| Цифра | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
Напишите программу, которая переводит номер телефона с буквами в обычный номер из цифр.
Ввод содержит одну или более строк. Каждая строка содержит номер, состоящий из прописных
латинских букв, цифр и символов '-' (минус), и ее длина не превышает
30 символов.
Для каждого номера из ввода вывести на отдельной строке обычный номер,
заменив буквы по указанной выше таблице.
Пример ввода
1-888-SHOP-IBM
EASY-2-SOLVE
Пример вывода
1-888-7467-426
3279-2-76583
B. Пасьянс
Ограничения: время – 2s/4s, память – 64MiB Ввод: input.txt или стандартный ввод Вывод: output.txt или стандартный вывод 
Послать решение Blockly Посылки Темы Где Обсудить (2)
В пункте меню "Статистика" игры "Пасьянс" можно увидеть вероятность выигрыша, а также
максимальные длины полос из выигрышей и проигрышей. Очевидно, что возможность выигрыша
в пасьянсе определяется только начальной раскладкой, поэтому вероятность почти не будет
меняться при возрастании числа игр, а вот максимальные длины полос будут постепенно возрастать.
Напишите программу, которая определит математические ожидания максимальной длины полос
из выигрышей и проигрышей после проведения `N` игр.
В первой строке ввода содержатся два числа – количество игр `N` (`1\ ≤\ N\ ≤\ 500`, целое)
и вероятность выигрыша `P` (`0\ ≤\ P\ ≤\ 1`, вещественное).
Вывести два числа через пробел – математические ожидания максимальной длины
полос из выигрышей и проигрышей после проведения `N` игр с точностью не менее `10^{-5}`.
Пример вывода 1
1.37500 1.37500
Пример вывода 2
2.00000 0.00000
C. Подземелье
Ограничения: время – 1500ms/3000ms, память – 64MiB Ввод: input.txt или стандартный ввод Вывод: output.txt или стандартный вывод 
Послать решение Blockly Посылки Темы Где Обсудить (0)
Два спелеолога решили обследовать подземелье, спустившись в него с двух различных входов и
встретившись внутри. При этом они договорились, что во время обследования всегда
будут находиться на одинаковой глубине, поднимаясь и опускаясь на другой уровень подземелья
одновременно.
Напишите программу, которая определит по плану подземелья минимальное время до встречи.
Первая строка ввода содержит два целых числа `N` и `M` – размеры подземелья (`2\ ≤\ N,\ M\ ≤\ 100`),
далее следует `N` строк, содержащих по `M` символов '.' или ‘#’ – план подземелья.
Символом '.' обозначается проход, а символом '#' – стена.
В начальной позиции первый спелеолог находится в левом верхнем углу, а второй – в правом верхнем
углу подземелья. Верхние углы подземелья свободны от препятствий.
За одну единицу времени спелеолог может перейти в соседнюю клетку по вертикали или горизонтали.
Вывести одно целое число – минимальное время до встречи спелеологов в подземелье.
Если встреча не может состояться, вывести число `-1`.
Пример ввода
4 7
.#####.
.#...#.
...#.#.
####...
D. Как в 4 приема превратить зиллион цифр в одну?
Ограничения: время – 1s/2s, память – 64MiB Ввод: input.txt или стандартный ввод Вывод: output.txt или стандартный вывод 
Послать решение Blockly Посылки Темы Где Обсудить (2)
Возьмем последовательность из `n` цифр. На каждом шаге мы можем расставить знаки +
в произвольном месте между цифрами и найти сумму получившегося выражения.
Если сумма состоит из более чем одной цифры, мы можем применить к ней аналогичный прием.
Доказано, что для превращения любой конечной последовательности цифр в одну цифру,
нуж