✎ Задать свой вопрос   *более 30 000 пользователей получили ответ на «Решим всё»

Задача 518 На плоскости задано N точек. Найти две

УСЛОВИЕ:

На плоскости задано N точек. Найти две точки среди данных, находящихся на минимальном расстоянии друг от друга.
Входные данные.
Первая строка входного файла содержит число N (2?N?10^5). Далее в файле записано N пар целых чисел, задающих координаты точек. Все координаты по модулю не превышают 104.
Выходные данные.
В выходной файл выведите пару чисел — номера точек, для которых достигается минимум расстояния. Точки нумеруются, начиная с 1. Если решений несколько, то следует вывести любое из них.

РЕШЕНИЕ:

var F, G:text;
a,b,c,d,i,j,n:integer;
var rasst,min:real;
begin

assign(F,'in.txt');
assign(G,'out.txt');
reset(F);
rewrite(G);


read(F,n);
readln(F);

min:=1000;

for i:=1 to n do begin



read(F,a); read(F,b);

for j:=1 to n do begin
if(i<>j) then begin
read(F,c); read(F,d);
rasst:=sqrt((c-a)*(c-a)+(d-b)*(d-b));

if(rasst<min) and (rasst<>min) then begin
min:=rasst; rewrite(G); writeln(G,i,' ',j);
end;


end;


if(j=n) then begin
close(F);
reset(F);
readln(F);
end;

end;


end;

close(F);
close(G);

end.

Вопрос к решению?
Нашли ошибку?

ОТВЕТ:

в решение

Добавил slava191, просмотры: ☺ 1259 ⌚ 24.01.2014. информатика 10-11 класс

Решения пользователелей

Хочешь предложить свое решение? Войди и сделай это!
Увы, но свой вариант решения никто не написал... Будь первым!

Написать комментарий

Последние решения
F = μ mg*sin(1) но это сходу, не уверен [удалить]
✎ к задаче 37476
Разделим на х
y`-(1/x)*y=lnx/(x^2)

Линейное, первого порядка

Решают методом вариации произвольной постоянной или методом Бернулли.

В любом случае приходится решить два уравнения с разделяющимися переменными.

Метод Бернулли.
Решение y представлено в виде произведения двух [b]произвольных [/b]функций.

y=u*v
y`=u`*v+u*v`

Подставляем в уравнение:

u`*v+u*v`-(1/x)*u*v=lnx/(x^2)

u`*v+u*(v`-(1/x)*v)=lnx/(x^2)


Функцию v=v(x) выбирают так, чтобы

[b]v`-(1/x)*v=0[/b]

тогда

[b]u`*v-u*0=lnx/(x^2)[/b]


Решаем первое уравнение с разделяющимися переменными:
v`-(1/x)*v=0

dv/v=dx/x

ln|v|=ln|x|

[b]v=x[/b]

Решаем первое уравнение с разделяющимися переменными:

u`*x=lnx/(x^2)

u`=lnx/(x^3)

u= ∫ lnxdx/(x^3)=-lnx/(-2x^2)+(1/2) ∫ dx/x^3=

=-lnx/(-2x^2)-(1/(4x^2))+C

cчитали по частям

u=lnx; du=dx/x

dv=dx/x^3
v=-1/(2x^2)

Общее решение: y=(-lnx/(-2x^2)-(1/(4x^2))+C)*х можно раскрыть скобки.

Так как
y(1)=0
найдем частное решение:

0=-ln1/(-2)-(1/4)+C
C=1/4

y=(-lnx/(-2x^2)-(1/(4x^2))+(1/4))*х- частное решение
[удалить]
✎ к задаче 37478
Преобразования линейные - значит постоянный множитель можно выносить за знак преобразования

(T_(2) o T_(1))(v)=T_(2) (T_(1)v)=T_(2) (7v-7u)=7T_(2)v-7T_(2)u=

=-7*(4v+5u)-7*(6v+2u)=-28v-35u-42v-14u= [b]-49u-70v [/b]

(T_(2) o T_(1))(u)=T_(2) (T_(1)u)=T_(2) (-7v-6u)=-7T_(2)v-6T_(2)u=

=-7*(4v+5u)-6*(6v+2u)=-28v-35u-36v-12u= [b]-64v-47u [/b]
[удалить]
✎ к задаче 37470
Находим абсциссы точек пересечения графиков
3x^2+1=3x+7
3x^2–3x–6=0
x^2–x–2=0
D=9
x_(1)=–1; x_(2)=2

V=π ∫ ^(2)_(-1) ((3x+7)^2-(3x^2+1)^2)dx=

=π ∫ ^(2)_(-1) (9x^2+42x+49-9x^4-6x^2-1)dx=

=π ∫ ^(2)_(-1) (3x^2+42x+48-9x^4)dx=

=π*(x^3+21x^2+48x-(9x^5/5))|^(2)_(-1)=

=π*(2^3-(-1)^3+21*(4-1)+48(2-(-1))-(9/5)*(32-(-1)))=

=π*(9+63+144-(297/5))= [b]π*(183/5)[/b]
(прикреплено изображение) [удалить]
✎ к задаче 37473
Находим абсциссы точек пересечения графиков
3x^2+1=3x+7
3x^2-3x-6=0
x^2-x-2=0
D=9
x_(1)=-1; x_(2)=2

S= ∫^(2)_(-1) (3x+7-(3x^2+1))dx= ∫^(2)_(-1) (3x+6-3x^2)dx=

=((3x^2/2)+6x-(3x^3/3))|^(2)_(-1)=

=(3/2)*(4-1)+6*(2-(-1))-(2^3-(-1)^3)=

=(9/2)+18-9= [b]13,5[/b]
(прикреплено изображение) [удалить]
✎ к задаче 37475