Главная
Блог разработчиков phpBB
 
+ 17 предустановленных модов
+ SEO-оптимизация форума
+ авторизация через соц. сети
+ защита от спама

Майское програсоревнование: делаем свой ГЛОНАСС

Anna | 1.06.2014 | нет комментариев
Шла холодная зима 2063 года… Вы, сидя в избушке в сибирских степях, попивая жгучий чай из ностальгических побуждений достали свой любимый раритетный телефон примера 2014 года с помощью ГЛОНАСС — впрочем он отчего-то не обнаружил ни одного спутника. Внезапно тишину разрезал пронизывающий громок красного правительственного телефона — голос на той стороне затараторил: оказалось все спутники ГЛОНАСС вышли из строя из-за неведомого сбоя… (ТЗЧ? Закладки? Кто сейчас разберет….)

Что-ж, вера сейчас только на вас — необходимо в кратчайшие сроки (к понедельнику) разработать новую систему спутниковой навигации с учетом достижений науки и техники 2063 года: в связи с тем, что термоядерные реакторы и аннигиляционные моторы стали довольно суперкомпактными, Дабы помещаться на борту спутника — их сейчас фиксируют в одной точке в околоземном пространстве, никакой орбиты огромнее нет. Соответственно, сборник и эфемериды (параметры орбиты спутников) огромнее не необходимо передавать со спутника на землю. 

Правило функционирования ГЛОНАСС в 2063 году

 

Дело происходит на двумерной плоскости. Предварительно вестимо, что приемник гарантированно находится не дальше 6378км от начала координат. Спутники — фиксированны в точках, отдаленных от центра координат на расстояние от 10 до 20тыс км. Всякий спутник передает одну и ту же псевдослучайную последовательность со скоростью передачи 1 Мегабит (миллион бит в секунду), сигнал мы принимаем с частотой 10 миллионов выборок в секунду. Т.к. всякий спутник передает сигнал на своей отдельной частоте — мы можем принимать их самостоятельно.

Псевдослучайная последовательность повторяется всякую секунду. Предисловие передачи спутниками псевдослучайной последовательности и приема сигнала на земле — безупречно совпадают, впрочем из-за того, что расстояние от спутников до приемника различное — из-за скорости света мы получаем сигнал с задержкой (скорость света = 299792458 метров в секунду) — т.е. вначале принимаем «хвост» предыдущей последовательности, потом «голову» нынешней. Вычислив задержку по сдвигу кодовой последовательности — мы можем оценить расстояние до спутника. Зная расстояние до нескольких спутников — мы можем приблизительно определить координаты.

Т.к. спутники и приемник стоят на месте — нет никакого доплеровского сдвига, и не необходимо рассматривать релятивистские результаты (в том числе гравитационные). Т.е. по времени здесь никаких хитростей.

Формат входных данных

 

Данные вводятся через типовой ввод с клавиатуры.
Первая строка — число N от 2 до 255: число спутников
Дальше изложение N спутников: в отдельных строках — координаты X и Y спутника в метрах, касательно начала координат.
Дальше — 10млн цифр 0 либо 1, принятая на земле псевдослучайная последовательность с этого спутника.

Алгорифм генерации псевдослучайной последовательности:

data = md5("3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679821480865132823066470938446" to_string(((pos)%10000000/10)))

Где pos — изменяется от 0 до 9999999. Если 1-й символ data>’7′ — то передается единица, напротив нуль.

Пример входного файла: (принятая кодовая последовательность показана Отчасти)

2
-6.83616e 006
1.6126e 007
000000000000000011111111110000000000000000000000000000000000[...]
-1.07643e 007
-1.48409e 007
10000000000111111111100000000001111111111111111111111111111111111[...]

Формат выходных данных

 

Итоги — печатаются в типовой итог.
Вещественные координаты приемника, поделенные пробелом — X и Y, в метрах, касательно начала координат.

В случае, если однозначное вычисление координат нереально — возможно вывести всякое из решений.

Пример выходного файла:

-1.81683e 006 -1.74334e 006

Примеры файлов ввода/вывода — дозволено скачать здесь: s.14.by/glonass-contest.zip

Оценка итогов

Если delta — оплошность определения координат в метрах и T — время затраченное на вычисление, то число баллов вычисляется по формуле 100/(delta 10) 10/(T 1). Если время работы больше 5 секунд на процессоре i7-3820 с HT либо оплошность определения координат превышает 100 метров —

Источник: programmingmaster.ru

Оставить комментарий
Форум phpBB, русская поддержка форума phpBB
Рейтинг@Mail.ru 2008 - 2017 © BB3x.ru - русская поддержка форума phpBB