printРабочее место участника

printЗадачи

577. Джамп (Hyperjump)

Ограничения: время – 2s/4s, память – 32MiB Ввод: input.txt или стандартный ввод Вывод: output.txt или стандартный вывод copy
Послать решение Blockly Посылки Темы Где Обсудить (0)

В дилогии С. Лукьяненко "Звезды – холодные игрушки" и "Звездная тень" описывается джамп – фантастическая технология, позволяющая мгновенно перемещаться в пространстве, практически не тратя энергии. Прыжок всегда производится на расстояние 12 с хвостиком световых лет (константа `J`) и это расстояние не зависит ни от конструкции джампера, ни от массы корабля. Для управления направлением полета необходим человек-пилот. Без пилота джампер уносит корабль в произвольном направлении. Путешествие на большие расстояния с помощью джампа является опасным, так как от длительной серии прыжков пилоты впадают в гиперпространственную эйфорию и начинают бесконечные прыжки в никуда, пока не иссякнет энергия.
При прыжках следует учитывать соотношение скоростей движения начальной и конечной точки путешествия, так как звезды в Галактике движутся относительно друг друга. Управление скоростью корабля производится путем выбора вектора направления прыжка и использования дополнительной энергии. Чтобы изменить скорость корабля на величину `Δv`, нужно при выполнении прыжка в направлении, совпадающем с `Δv`, использовать дополнительную энергию `E=m*|Δv|^2/2`.
Напишите программу для расчета серии джампов, которая позволит добраться от одной заданной точки до другой. Количество джампов в серии не должно превышать 30.
Во входном файле в первой строке содержатся два вещественных числа, разделенных пробелом – константа `J\ (1\ ≤\ J\ ≤\ 20)` и масса корабля в тоннах `m\ (10\ ≤\ m\ ≤\ 1000)`. Далее следует строка, содержащая 6 вещественных чисел, разделенных пробелами – координаты точки старта корабля `(x,\ y,\ z)` в парсеках и вектор начальной скорости корабля `(v_x,\ v_y,\ v_z)` в км/c. Следующая строка также содержит 6 вещественных чисел, разделенных пробелами – координаты конечной точки путешествия корабля в парсеках и вектор требуемой конечной скорости корабля в км/c. Расстояние между начальной и конечной точками не превышает `25J`. Ограничения на координаты и скорость следующие: `|x|≤1000`, `|y|≤1000`, `|z|≤1000`, `|v_x|≤100`, `|v_y|≤100`, `|v_z|≤100`.
В выходной файл в первой строке вывести целое число `N` – количество джампов (не обязательно минимальное) для путешествия корабля из начальной точки в конечную. Далее должны быть выведены `N` строк, содержащие по 4 вещественных числа, разделенных пробелами – координаты точки (в парсеках, с 6 десятичными знаками), в которую должен быть совершен `i`-ый джамп `(1\ ≤\ i\ ≤\ N)`, и количество дополнительной энергии (в ГДж, с 2 десятичными знаками), затрачиваемой на прыжок с целью изменения скорости корабля. Скорость корабля в конечной точке должна быть равна заданной, при этом не нужно заботиться о минимальности расходуемой энергии на изменение скорости корабля, так как эта энергия заимствуется из гиперпространства при джампе. Координаты `N`-ой точки должны совпасть с координатами конечной точки. Расстояние между начальной и конечной точками для одного джампа должно быть равно `J`.

Пример ввода

10.0 20.0
0.0 0.0 0.0 -5.0 0.0 0.0
20.0 10.0 0.0 0.0 2.0 3.0

Вывод для примера

5
10.000000 0.000000 0.000000 0.00
20.000000 0.000000 0.000000 250.00
20.000000 10.000000 0.000000 40.00
20.000000 10.000000 10.000000 90.00
20.000000 10.000000 0.000000 0.00
Условие задачи на английском языке
loading