img img img img img img img img img img img img img img img img img img img img img img
Логотип Человек живет, пока думает.
Решайте задачи и живите долго!
Для участия в проекте необходимо
и достаточно зарегистрироваться!
Rss Регистрация || Вход
Вход
Diofant.ru
Картинка
Отражение Отражение Картинка Картинка
отражение
Лента событий: user033 добавил комментарий к решению задачи "Детская классика" (Математика):
+ 2

Задача 320. Миллион истинных пересечений

постоянный адрес задачи: http://www.diofant.ru/problem/1047/
показать код для вставки на свой сайт >>
Задачу решили: 5
всего попыток: 25
поделиться задачей:

Задача опубликована: 27.09.10 08:00
Прислал: mikev img
Источник: Проект "Эйлер" (http://projecteuler.net)
Вес: 1
сложность: 1 img
баллы: 100

Два отрезка могут не иметь общих точек, могут иметь одну общую точку или бесконечно много общих точек.

Будем говорить, что два отрезка имеют истинную точку пересечения, если они имеют единственную общую точку, и эта точка не является концом ни одного из указанных отрезков.

Положение отрезка на плоскости однозначно определяется координатами его концов. Рассмотрим  три отрезка:

  • отрезок L1 с концами (27, 44) и (12, 32)
  • отрезок L2 с концами (46, 53) и (17, 62)
  • отрезок L3 с концами (46, 70) и (22, 40)

Легко проверить, что отрезки L2 и L3 имеют истинную точку пересечения. Один из концов отрезка L3, а именно точка (22, 40), лежит на отрезке L1, и поэтому точка пересечения L1 и L3 не считается истинной. Отрезки L1 и L2 не имеют общих точек. Таким образом, для трех выбранных отрезков мы найдем только одну истинную точку пересечения.

Будем теперь последовательно строить отрезки и подсчитывать их истинные точки пересечения. Чтобы построить n отрезков, нам нужно 4n координат их концов. Будем генерировать эти числа случайным образом с помощью алгоритма Блюма - Блюма – Шуба:

s0 = 290797
sn+1 = sn × sn (mod 50515093)
tn = sn (mod 200)

Чтобы построить отрезок, мы будем брать четыре последовательных числа. Например, координаты концов первого отрезка будут следующими:
(t1, t2) и (t3, t4)
Четыре первых числа, сгенерированные нашим алгоритмом, будут t1=127, t2=144, t3=112, t4=132, и концы первого отрезка будут иметь координаты (127,144) и (112,132).

Чтобы количество различных истинных точек пересечения превысило одну тысячу, нужно сгенерировать ровно сто отрезков: действительно, первые 99 отрезков будут иметь 992 различных истинных точек пересечения, а первые 100 отрезков – уже 1003.
Сколько необходимо сгенерировать отрезков, чтобы количество различных истинных точек пересечения превысило миллион?

 
Пожалуйста, не пишите нам, что Вы не можете решить задачу.
Если Вы не можете ее решить, значит Вы не можете ее решить :-)

Обсуждение Правила >>

Внимание! В обсуждении задачи запрещено публиковать ответы и давать подсказки.
 
Внимание! Если Вы увидите ошибку на нашем сайте, выделите её и нажмите Ctrl+Enter.