Задача: ** поверхности прямоугольного параллелепипеда сидит муха и нанесена капля...

0 голосов
38 просмотров

Задача:
На поверхности прямоугольного параллелепипеда сидит муха и нанесена капля варенья. Определите наименьшее расстояние, которое должна проползти муха по поверхности параллелепипеда, чтобы доползти до капли.

Входные данные:

Первые три строки входных данных содержат положительные числа K, L, M, являющиеся размерами параллелепипеда вдоль осей OX, OY, OZ. Один угол параллелепипеда находится в начале координат, противоположный – в точке (K;L;M), ребра параллелепипеда параллельны осям координат.
Следующие три строки входных данных содержат координаты мухи X1, Y1, Z1, затем идут три строки с координатами варенья X2, Y2, Z2. Задаваемые этими координатами точки находятся на поверхности параллелепипеда. Все числа во входных данных целые, не превосходящие 1000.

Выходные данные:

Программа должна вывести единственное число – кратчайшее расстояние, которое должна проползти муха по поверхности параллелепипеда, чтобы добраться до варенья. Ответ необходимо вывести в виде действительного числа, проверка будет осуществляться с точностью 10-3.

Пример
Вход Выход
1 2.236067977
1
1
0
0
0
1
1
1

Вход Выход
12 13
5
2
1
0
1
12
4
1

Написал "каркас" программы без уравнения, которое решает задачу:

Program rast;
var K, L, M, X1, Y1, Z1, X2, Y2, Z2, R : real;
begin
writeln('Введите 3 положительных числа K, L, M, являющиеся размерами параллелепипеда вдоль осей OX, OY, OZ');
readln(K, L, M);
writeln('Введите координаты мухи X1, Y1, Z1');
readln(X1, Y1, Z1);
writeln('Введите координаты варенья X2, Y2, Z2');
readln(X2, Y2, Z2);
R:=;
writeln(R);

end.
Какое уравнение должно вычислять R? Помогите пожалуйста


Информатика (15 баллов) | 38 просмотров
Дан 1 ответ
0 голосов
Правильный ответ

Баллы не ставте. ДОБАВЛЯЮ РЕШЕНИЕ, БОЮСЬ НЕ УСПЕТЬ оформить. Но там, если что, вроде обещали вторую попытку редакции. Тогда и программу можно будет добавить Думаю ход рассуждений уже можно понять. Если точки расположены на смежных гранях, формулы получаются похожими ,(а может и такими же), что рассматривались товарищем Allangarsk  Если на противоположных гранях, то надо еще добавить (оформить). Идея то есть.  В общем все многообразие вариантов можно будет втиснуть в 7 групп "формул".


Можно развернуть куб, центром "развертки" делаем грань где сидит муха, если муха и варенье на одной грани достачно просто, путь прямая, Зелным цветом залита одна и таже грань отмечено 4 возможных пути один из которых, в зависимости от размеров куба и координат мухи и варенья будет кратчайшим. Кратчайший путь для ситуации на рисунке -  зеленый пунктир.
Да если достроить до треугольника (черный пунктир катеты d и f), искомый путь гипотенуза. Её длина l= \sqrt{d^2+f^2}
Значит вся "хитрость" в том, чтобы правильно "собрать" длины катетов.
Если успею обобщить и облечь все в формулы (код) (логические выражения), добавлю. И уточню рисунки. Если нет, может кто-то догадается. Или в крайнем случае отошлют на доработку мне или Allangarsk.
Возможно, что в случае расположения на противоположных гранях, придется просчитывать все пути кандидаты и выбирать из них наименьший.
 В случае на расположения на одной грани (X1=X2)OR(Y1=Y2)OR(Z1=Z2) кратчайший путь очевиден. Если, допустим Z1=Z2, то l= \sqrt{(X1-X2)^2+(Y1-Y2^2)}
d=(X1-X2), f=(Y1-Y2).





Скачать вложение Adobe Acrobat (PDF)
Скачать вложение Adobe Acrobat (PDF)
(13.2k баллов)