2
|
Задача 320. Миллион истинных пересеченийпостоянный адрес задачи: http://www.diofant.ru/problem/1047/показать код для вставки на свой сайт >> |
Задачу решили:
5
всего попыток:
25
поделиться задачей:
|
|
Задача опубликована:
27.09.10 08:00
Прислал:
mikev
Источник:
Проект "Эйлер" (http://projecteuler.net)
Вес:
1
сложность:
1
класс:
11 и старше
баллы: 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.
Сколько необходимо сгенерировать отрезков, чтобы количество различных истинных точек пересечения превысило миллион?
Если Вы не можете ее решить, значит Вы не можете ее решить :-)