— Это у тебя модель Солнечной системы?
— Она самая, только что сделал. Смотри, все планеты вращаются вокруг
Солнца, а некоторые ещё и вокруг собственной оси.
— А почему у тебя ось вращения Земли проходит через Сингапур и
Эквадор?
— Вот с этим я сейчас и пытаюсь разобраться. Дело в том, что у меня есть две модели
Земли. Обе являются сферами. Первая модель — физическая. На её основе
рассчитано вращение Земли вокруг своей оси и вокруг Солнца, влияние Луны и
прочих небесных тел. Вторая — графическая — та, которая изображается
на экране, с материками и океанами. Эти две модели совместились
неправильно, и северный полюс сейчас в Сингапуре.
— И как ты совмещал эти две модели?
— Очень просто. Выбрал несколько ключевых точек на графической модели и
указал, где они расположены на физической. Дальше движок сам определил,
с каким поворотом нужно наложить одну модель на другую так, чтобы точки совпали.
Проблема в том, что про точку, отмеченную на физической
модели, движок не знает, образом какой ключевой точки графической модели она является.
Все ключевые точки он совместил, но не тем образом, каким я хотел.
— А сколько всего существует разных поворотов сферы, при которых
все ключевые точки переходят в ключевые точки?
— Интересный вопрос, давай посчитаем.
Исходные данные
В первой строке дано единственное целое число n — количество ключевых точек
на сфере (3 ≤ n ≤ 200).
В следующих n строках даны по три действительных числа xi, yi и zi — координаты
i-й ключевой точки в системе координат с началом отсчёта в центре
Земли. Координаты даны не более чем с девятью знаками после десятичной точки.
Радиус Земли следует считать равным единице.
Расстояние между любыми двумя ключевыми точками составляет не менее 10−5.
Результат
Выведите количество вращений сферы, переводящих все ключевые точки в ключевые, включая тождественное вращение.
Следует считать, что вращение переводит ключевую точку A в ключевую точку B, если оно переводит A в точку на расстоянии
не более 10−6 от B.
Вращения, переводящие ключевые точки в одни и те же ключевые точки, следует считать равными.
Пример
исходные данные | результат |
---|
3
0 1 0
1 0 0
0 0 1
| 3
|
Автор задачи: Денис Дублённых
Источник задачи: XVII Открытый чемпионат Урала по спортивному программированию (май, 2013)